1
我需要執行「更新觸發器」,以將表位置更改插入到審計表中。更新的T-SQL觸發器審計
我知道如何訪問插入/刪除,爲新老值,但我不能似乎發現了什麼,我需要獲得該更新的不同列做的。(我知道光標使用等)
這裏我得到的時刻代碼(SRY是法語)
ALTER TRIGGER T_U_Locations ON Locations
FOR UPDATE
AS
BEGIN
--Definition des valeurs
DECLARE @tempDuChangement VARCHAR(30);
DECLARE @nomDuChampChange VARCHAR(64);
DECLARE @idLocation INT;
DECLARE @ancienneV VARCHAR(50);
DECLARE @nouvelleV VARCHAR(50);
DECLARE @raison VARCHAR(50);
--Aquisition des valeurs sur les changement apportés
SET @tempDuChangement = CONVERT(VARCHAR(30) , CURRENT_TIMESTAMP);
SET @nomDuChampChange = --HERE GOES THE CURRENT UPDATED COLUMN
SET @idLocation = (SELECT inserted.id FROM inserted);
SET @ancienneV = (SELECT /*HERE GOES THE CURRENT UPDATED COLUMN*/ FROM deleted);
SET @nouvelleV = (SELECT /*HERE GOES THE CURRENT UPDATED COLUMN*/ FROM inserted);
-- Crée une nouvelle entré dans la table Audits avec les information relative
INSERT INTO Audits
VALUES
(
@tempDuChangement,
@nomDuChampChange,
@ancienneV,
@nouvelleV,
@idLocation,
'raison test'
)
END
參考:https://docs.microsoft.com/en-us/sql/t-sql/functions/update-trigger-functions-transact-sql – FLICKER
「插入」和「刪除」是表,以便他們可以表示集合操作的結果。設計一個觸發器,假設它總是處理一行,通常是一個糟糕的計劃。如果你絕對肯定永遠不會有多行,那麼_please_添加一個行數檢查,並使用'RaIsError'或'Throw'來明確告知那些稍後來到的人他們試圖執行一個不可接受的語句。 ('if(從插入中選擇Count(*))> 1 RaIsError('FooTable_Insert:不會超過一行可以被處理',25,42)with log') – HABO