SQL触发器更新后,用值更新字段

本文关键字:更新 字段 触发器 SQL | 更新日期: 2023-09-27 18:25:26

我正在尝试编写一个在执行更新后运行的触发器。我希望触发器更新被更新的最后一行,并用字符串"填充名为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

我得到以下错误:

无效列名";改变"。-我不知道为什么它认为更改是一个列名

多部分标识符";插入。TID";无法绑定。-我不确定这一行的语法,试图对刚刚更新的行执行更新。

SQL触发器更新后,用值更新字段

From子句中"change"和引用INSERTED周围的引号使用单引号。

UPDATE tbl8_update_transactions
SET ACTION_TYPE = 'change'
FROM inserted
WHERE tbl8_update_transactions.TID = inserted.TID; 

您需要使用单引号。

SET ACTION_TYPE = 'change'

SQL Server中的值不能使用双引号字符。