Sql server sql server中使用更新触发器的级联更新
在更新Sql server sql server中使用更新触发器的级联更新,sql-server,Sql Server,在更新ProvinceID时,我正在使用以下代码更新Residence表中的外键值,但我收到此错误: update语句与引用约束“FK_居住省”冲突。冲突发生在数据库“”的表“dbo,派驻机构”列“派驻机构”中 代码: 我不明白你想在这里做什么-我们从where子句中知道,已删除。ProvinceID和已插入。ProvinceID是相等的,而relidences.relidencestate和deleted.ProvinceID是相等的-因此SET子句实际上执行了一个no-op命令。-旧样式的逗
ProvinceID
时,我正在使用以下代码更新Residence
表中的外键值,但我收到此错误:
update语句与引用约束“FK_居住省”冲突。冲突发生在数据库“”的表“dbo,派驻机构”列“派驻机构”中
代码:
我不明白你想在这里做什么-我们从where子句中知道,
已删除。ProvinceID
和已插入。ProvinceID
是相等的,而relidences.relidencestate
和deleted.ProvinceID
是相等的-因此SET
子句实际上执行了一个no-op命令。-旧样式的逗号分隔表列表样式在更新ProvinceID时已随ANSI-92 SQL标准(20多年前)而终止,我想用触发器更新驻留表中的id。但正如你所说的,deleted.ProvinceID和inserted.ProvinceID将是相同的,那么如何区分两者呢?
CREATE trigger [dbo].[UPOnProvinceDelete]
ON [seniors].[dbo].[Provinces]
FOR UPDATE AS
SET NOCOUNT ON
IF UPDATE([ProvinceID])
BEGIN
UPDATE seniors.dbo.Residences
SET [Residences].[ResidenceState] = inserted.[ProvinceID]
FROM [Residences], deleted, inserted
WHERE deleted.[ProvinceID]= [Residences].[ResidenceState]
AND deleted.[ProvinceID]= inserted.[ProvinceID]
END;