我有这张桌子:
我希望在插入之前和更新之前,使用 FooColumn1 的值更新 FooColumn2 中的每一行 在MySql中,我在使用之前使用和更新之前的触发,但我已经读过MS-SQL不支持它。
我如何在MS-SQL中执行此操作?
答案 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