SQL - 更新同一表上的其他列时更新列

时间:2016-11-25 15:25:12

标签: sql-server triggers

我有这张桌子:

enter image description here

我希望在插入之前和更新之前,使用 FooColumn1 的值更新 FooColumn2 中的每一行 在MySql中,我在使用之前使用和更新之前的触发,但我已经读过MS-SQL不支持它。

我如何在MS-SQL中执行此操作?

1 个答案:

答案 0 :(得分:2)

如果您只想保存旧值,则只需要更新触发器:

CREATE TRIGGER trg_iu_TableName ON TableName INSTEAD OF UPDATE AS BEGIN SET NOCOUNT ON Update t set t.Foocolumn1 = i.Foocolumn1 set t.Foocolumn2 = t.Foocolumn1 from TableName t inner join inserted i on t.idfoo=i.idfoo END

..或者如果你想将Foocolumn2设置为与Insert:

上的Foocolumn1相同

CREATE TRIGGER trg_iu_TableName ON TableName INSTEAD OF UPDATE, INSERT AS BEGIN SET NOCOUNT ON if (select count(*) from deleted) = 0 Insert into Tablename (Foocolumn1, Foocolumn2) select Foocolumn1, Foocolumn1 from inserted else Update t set t.Foocolumn1 = i.Foocolumn1 set t.Foocolumn2 = t.Foocolumn1 from TableName t inner join inserted i on t.idfoo=i.idfoo END