复制SQL数据库和修复外键

时间:2013-12-24 08:19:36

标签: sql-server

我正在制作一个优化路线的应用程序(有点像VRP)。用户必须能够复制所有输入数据,并对此数据进行更改。通过这种方式,他们能够找出对优化的影响。

因此我选择让他们能够复制所有输入数据,并且有点像数据的版本管理。

我想复制以下表格:

TableOne

ID     UUID     WEIGHT     CODE     
1      abc        15        AB
2      abd        5         AC

TableTwo

ID     UUID      SIZE      TABLE1_FK
1      abe        1           1
2      abf        3           2

结果表(复制后):

TableOne

ID     UUID     WEIGHT     CODE     
1      abc        15        AB
2      abd        5         AC
3      abg        15        AB
4      abh        5         AC

TableTwo

ID     UUID      SIZE      TABLE1_FK
1      abe        1           1
2      abf        3           2
3      abi        1           1
4      abj        3           2

到目前为止,我可以管理。但是现在当我想更新TableTwo的外键以指向TableOne中的复制行时,我就陷入困境。

我想做类似的事情:

UPDATE TableOne 
SET TABLE1_FK = 
(SELECT t.ID 
 FROM TableOne t 
 WHERE t.WEIGHT = (SELECT t.WEIGHT 
                   FROM TableOne t1 
                   WHERE ...)
)

这就是我被困的地方。 想要的结果是:

TableTwo

ID     UUID      SIZE      TABLE1_FK
1      abe        1           1
2      abf        3           2
3      abi        1           3
4      abj        3           4

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

插入第一个表后,选择它@@ IDENTITY并使用它进行插入 在第二个表中作为外键。