EDIT:我认为我误解了你的说法,即钥匙在数据库中是独特的。 在此情况下,如果原数据库已经输入目标数据库,我就不要再加一行。 你们仍然可以在外国关键表格中复制,然后是同样的外国钥匙。
so basically:
INSERT INTO MainTable (PK, field1, field2)
SELECT (PK, field1, field2)
FROM OldMainTable
WHERE PK NOT IN (SELECT PK FROM MainTable)
仅举一例,便提供以下旧答案。
您的最好办法是修改表格,以便有一个古老的领域。 然后,在目标数据库中插入数据,在旧财产领域储存原来的PK。 然后,当你用外国钥匙插入任何东西时,将FK与旧财产所在地相匹配,并更新外国钥匙。 (或许是一个好的主意,就是要制作外国钥匙的复印件!)
SO the queries might look something like this:
INSERT INTO MainTableTarget (OldPrimaryKey, field1, field2...)
SELECT PrimaryKey as OldPrimaryKey, field1, field2...
FROM OldMainTable
INSERT INTO Table2Target ( OldTable2PK, MainTableForeignKey, fielda, fieldb...)
SELECT Table2PK as OldTable2PK,
(SELECT PK FROM MainTableTarget) as MainTableForeignKey, --This get the FK to point at the newly created database record
fielda,
fieldb
FROM OldTable2
这可能是痛苦的,但我认为这里没有任何非和平的选择。
Oh, and sorry if the syntax is a little off... I m a T-SQL guy so don t really know MySQL s syntax. Hopefully you get the idea though...