我试图写一个在执行更新后运行的触发器。我希望触发器更新已更新的最后一行,并使用字符串"更改"填充名为ACTION_TYPE的字段。
表格结构
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"无法受约束。 - 我不确定这个语法的语法,试图对刚刚更新的行执行更新。
答案 0 :(得分:0)
您需要使用单引号。
SET ACTION_TYPE = 'change'
您不能在SQL Server中使用双引号字符。
答案 1 :(得分:0)
使用单一刻度来改变'更改'并在From子句中引用INSERTED。
UPDATE tbl8_update_transactions
SET ACTION_TYPE = 'change'
FROM inserted
WHERE tbl8_update_transactions.TID = inserted.TID;