我試圖編寫一個執行更新後運行的觸發器。我希望觸發器更新最後一個更新的行,並使用字符串「changed」填充名爲ACTION_TYPE的字段。更新後更新字段的SQL觸發器
表結構
USE BillingUI;
CREATE TABLE tbl8_update_transactions
(
TID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
ACTION_TYPE nchar(6) NULL,
HID int,
FOREIGN KEY (HID) REFERENCES HOLIDAY_DATE_TABLE (HID) ON DELETE CASCADE
);
觸發
CREATE TRIGGER tbl8_ins
ON tbl8_update_transactions
AFTER UPDATE
AS
BEGIN
UPDATE tbl8_update_transactions
SET ACTION_TYPE = "change"
WHERE TID = inserted.TID;
END
我收到以下錯誤:
無效列名 「變化」。 - 我不知道爲什麼它認爲變化是列名
多部分標識符「inserted.TID」無法綁定。 - 我不確定這一個的語法,試圖在剛剛更新的行上執行更新。
你的觸發器有** MAJOR **缺陷,你似乎認爲它會被稱爲每行** ** - 這是**不是**的情況。觸發器將在每個語句**中觸發一次**,所以如果你的UPDATE語句影響了25行,你將觸發**觸發**一次,但是,然後「插入」和「刪除」將分別包含25行。您的代碼在這25行中選擇哪一行:'...... WHERE TID = inserted.TID' - 它是非確定性的。你需要重寫你的觸發器來考慮這個問題! – 2014-10-03 18:49:29