Lutz Donnerhacke <
lu...@iks-jena.de> wrote:
> * Dirk Thierbach wrote:
>> Wie stelle ich es am geschicktesten an, die "id"-Schluessel und ihre
>> Referenzen so umzubennen, dass es beim Zusammenfuehren keine
>> Kollisionen gibt?
> 1) Ändere den FOREIGN KEY auf ON UPDATE CASCADE.
Den kannte ich noch nicht, guter Trick.
> 2) Akutalisiere die id Spalte in jeder Instanz auf einen lokal eindeutigen
> Bereich ala UPDATE ... SET id = 1000000 + id; wobei der Offset pro
> Instanz verschieden sein sollte.
Das Problem ist, dass der existierende id relativ wuest zu sein scheint,
zumindest kann ich kein System erkennen (alles sehr grosse Zahlen, teilweise
negativ).
Vielleicht kann man ja mit last_insert_rowid() irgendwas basteln,
was die vernuenftig umbenennt. Allerdings bin ich mir nicht sicher, wie
ich dabei evtl. Konflikte am besten behandeln soll.
> 3) Merge
"MERGE INTO" gibt's in sqlite3 nicht, aber das kann man ja simulieren.
> 4) Aktualisiere die Sequenz im Merge.
Verstehe ich nicht. Welche Sequenz? Die der id-Schluessel? Wenn die
nicht aufeinanderfolgen, ist's mir auch egal. :-)
Danke, das hilft schonmal etwas weiter.
- Dirk