2017-07-26 42 views
0

我正在使用SQL Server。我已经使用连接编写了更新声明。我尝试更新表中的一列,但我的更新语句从另一个表中删除值。我不明白为什么它会发生,即使我正在更新一列的值。SQL Server更新查询更新两个表

update rs 
set rs.col1 = t.col2 
from table1 r 
join table2 rs on rs.Id = r.Id 
join @temp t on t.Id = rs.Id 

我想在table2更新col1价值,但它col1更新值都在table2table1

+2

SQL Server中的'update'语句只更新一个表。你误解了某些东西,除非你在'table2'上有触发器。 –

+2

你在这些表上有触发器吗? –

+0

我在这些桌子上没有触发器。 – user3661407

回答

0

我觉得你有你的加入一个问题。我也刚刚重新命名了一些表格的别名,以使这个表述更加清晰。

update t2 
set t2.col1 = t.col2 
from table1 t1 
    join table2 t2 on t2.id = t1.id 
    join @temp t on t.Id= t2.Id 
+0

我的加入是否存在技术问题或者它是一个命名问题? – user3661407

+0

只要再看一遍,不要认为有技术问题。我会看看用户Pawek Tajs的问题,看看是否有其他可能会干扰数据的事情。 – SQLAndOtherStuffGuy

+0

所有这一切都可能发生,因为这两张桌子之间有关系? – user3661407

0

级联规则必须在表上有。在表上更新级联删除级联规则。

当您通过级联规则更新一个表的列时,它将从另一个表中删除值。检查您是否在桌面上应用了级联规则。 如果级联规则适用于表table1和table2,则首先删除该级联规则,然后再尝试更新它。

+0

我检查了它。在表上没有应用级联规则。 – user3661407