【发布时间】:2015-03-19 20:36:18
【问题描述】:
假设我有 3 张桌子:
表 1:
Table1ID (pk) |
Table1Value
表2:
Table2ID (pk) | Table1ID (fk) | Table2Value
表3:
Table3Id (pk) | Table2ID (fk) | Table3Value
我有这样的数据:
表1:
1 | Table1Value1
2 | Table1Value2
表2:
1 | 1 | Table2Value1
12 | 1 | Table2Value2
35 | 2 | Table2Value1 (same value as 1st entry above for now)
36 | 2 | Table2Value2 (same value as 2nd entry above for now)
表3:
1 | 1 | Table3ValueData1
2 | 12 | Table3ValueData2
现在,我现在要做的就是克隆 table3 数据,而是设置 Table2ID = id 属于 table1ID = 2 的值。
我试过这个查询:
INSERT INTO Table3 (Table2ID, Table3Value)
SELECT
Table2ID, Value
FROM
Table3 t3
JOIN
Table2 t2 on t3.Table2ID = t2.Table2
WHERE
Table1ID = 1
不幸的是,这只是复制具有相同 Table2ID 的数据,如下所示:
1 | 1 | Table3ValueData1
2 | 12 | Table3ValueData2
52 | 1 | Table3ValueData1
53 | 12 | Table3ValueData2
这就是我希望 Table3 中的数据看起来的样子:
1 | 1 | Table3Value1Data1
2 | 12 | Table3ValueData2
52 | 35 | Table3ValueData1
53 | 36 | Table3ValueData2
Table3 中的数据现在应该保持不变,但外键现在应该指向不同的父级(35 和 36 而不是 1 和 12)。我该怎么做呢?任何帮助将不胜感激。
【问题讨论】:
-
我完全不清楚您在这里要做什么。您可以在 sqlfiddle.com 创建一个 sqlfiddle 以开始使用吗?用一些数据而不是这堵文字墙更容易理解你想要做什么。
标签: sql-server database foreign-keys primary-key