更新后的SQL触发器,更新具有值的字段

时间:2014-10-03 18:46:33

标签: c# sql sql-server

我试图写一个在执行更新后运行的触发器。我希望触发器更新已更新的最后一行,并使用字符串"更改"填充名为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"无法受约束。 - 我不确定这个语法的语法,试图对刚刚更新的行执行更新。

2 个答案:

答案 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;