Sun*_*ise 5 sql foreign-keys sql-server-2008
我知道之前已经问过如何在SQL中更新多个表的问题,并且常见的答案似乎是在事务中单独进行.
但是,我需要更新的2列有一个外键,因此无法单独更新.
例如
Table1.a是Table2.a的外键
表中的一个条目是错误的,例如,两列都是'xxx',应该是'yyy'
如何将Table1.a和Table2.a更新为'yyy'?
我知道我可以暂时取下钥匙并更换,但肯定还有另一种方法.
谢谢
Gar*_*thD 10
您无法同时执行更新,但可以强制SQL执行更新.您需要确保外键具有引用触发操作ON UPDATE CASCADE
例如
ALTER TABLE YourTable
ADD CONSTRAINT FK_YourForeignKey
FOREIGN KEY (YourForeignKeyColumn)
REFERENCES YourPrimaryTable (YourPrimaryKeyColumn) ON UPDATE CASCADE
Run Code Online (Sandbox Code Playgroud)
我不喜欢级联更新,所以我建议采用不同的路线。
首先,您不更新父表,而是添加一条具有所需值的新记录(并且所有其他字段的数据与其他记录相同)。然后,您可以毫无困难地更新子表以使用该值而不是该值。此外,您现在可以批量完成工作,以避免在更改通过系统传播时锁定系统。一旦所有子表都被更新,您就可以删除原来的坏记录。