我有主要详细信息表
MasterTBL
ID Name Age
12 name1 15
544 name2 15
2544 name3 15
DetailsTBL
ID session MasterID
1 Test 12
2 Test2 12
3 test3 544
4 test4 2544
5 test5 12
6 test6 544
是否可以在没有数据冲突的情况下更改主表和详细信息表的ID 就像:
MasterTBL
ID Name Age
1 name1 15
2 name2 15
3 name3 15
DetailsTBL
ID session MasterID
1 Test 1
2 Test2 1
3 test3 2
4 test4 3
5 test5 1
6 test6 2
我使用此功能在主
中执行此操作row_number() over (order by id)
但我该怎么做才能更新细节
答案 0 :(得分:0)
试试这个:
DECLARE @Temp TABLE (TempID INT IDENTITY(1,1), ID INT)
INSERT INTO @Temp (ID)
SELECT ID FROM MasterTBL
SET @Total = @@ROWCOUNT
DECLARE @Count INT = 1
DECLARE @ID INT
WHILE @Count <= @Total
BEGIN
SET @ID = (SELECT ID FROM @Temp WHERE TempID = @Count)
-- Update Details Table
UPDATE DetailsTBL SET MasterID = @Count WHERE MasterID = @ID
-- Update Master Table
UPDATE MasterTBL SET ID = @Count WHERE ID = @ID
SET @Count = @Count + 1
END
首先需要更新详细信息表,然后更新主表。
答案 1 :(得分:0)
如果可以,请执行以下操作:
在您的MasterTBL表格中添加另一列以保存您当前ID的值,并将其命名为有意义的内容,例如OLDID。将当前ID值复制到此列,然后您可以使用提到的row_number函数更新ID字段。
ID Name Age OldID
1 name1 15 12
2 name2 15 544
3 name3 15 2544
然后你要做的就是使用OldID列将DetailsTBL加入MasterTBL以获取新的ID值以更新DetailsTBL表。