Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新后的SQL触发器,使用值更新字段_C#_Sql_Sql Server - Fatal编程技术网

C# 更新后的SQL触发器,使用值更新字段

C# 更新后的SQL触发器,使用值更新字段,c#,sql,sql-server,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_DESCRIPTI

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


你需要使用单引号

SET ACTION_TYPE = 'change'

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

在From子句中插入的“change”和引用周围的引号使用单引号

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

您的触发器有一个主要缺陷,您似乎认为它每行调用一次,但事实并非如此。每个语句触发一次触发器,因此如果UPDATE语句影响25行,则触发一次触发器,但Inserted和Deleted语句将分别包含25行。您的代码将在此处选择这25行中的哪一行:。。。。其中TID=inserted.TID-它是不确定的。你需要重写你的触发器来考虑这一点!正如这个答案所暗示的,触发器发生在集合上,而不是单个行上。插入的表中有N行,而不仅仅是一行。除非您只更新一行,但必须为set-basedfield TID编写逻辑,否则该逻辑是不明确的。另外,我一次只更新一行,所以这不成问题。哎呀,对不起,字段不明确。我已经编辑了它以包含更新引用。