Sql-Server

使用 MS SQL Server 插入觸發器後

  • July 14, 2020

我想我已經涵蓋了所有基礎,但想問比我更了解的人。這是我的語法。

UPDATE SI
SET autoInsert = 0
FROM inserted
WHERE SI.autoInsert = SI.autoInsert
OR SI.autoInsert IS NULL;

我想設置autoInsert = 0whereautoInsert = 1autoInsert IS NULL

我將假設您的表上有某種身份或唯一鍵列SI。(如果你沒有,這會有點困難。)

我還將假設您的autoInsert列是 BIT 數據類型。這意味著我們可能擁有的唯一值是 1、0 或 NULL。並且您希望將值更新為 0。

最後,我假設您只關心autoInsert專欄的更新。

如果這一切都是真的,試試這個:

CREATE OR ALTER TRIGGER dbo.trg_ZeroAutoInsert
   ON dbo.SI
AFTER UPDATE
AS
UPDATE          dbo.SI
SET             autoInsert = 0
FROM            dbo.SI
   INNER JOIN  inserted AS i
       ON      SI.id = i.id ;

但是,如果您的autoInsert列是 INT(或類似)數據類型,則可以添加 where 子句以僅覆蓋 1 或 NULL 的值:

CREATE OR ALTER TRIGGER dbo.trg_ZeroAutoInsert
   ON dbo.SI
AFTER UPDATE
AS
UPDATE          dbo.SI
SET             autoInsert = 0
FROM            dbo.SI
   INNER JOIN  inserted AS i
       ON      SI.id = i.id
WHERE           i.autoInsert = 1
   OR          i.autoInsert IS NULL ;

引用自:https://dba.stackexchange.com/questions/270891