Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql server 用于插入和更新的SQL触发器_Sql Server_Triggers - Fatal编程技术网

Sql server 用于插入和更新的SQL触发器

Sql server 用于插入和更新的SQL触发器,sql-server,triggers,Sql Server,Triggers,Sql新手需要帮助 我有一个在Insert上发生SQL触发器的表。看起来是这样的: ALTER TRIGGER Holiday_ITrig ON HolidayDate FOR INSERT AS IF NOT EXISTS ( SELECT ID FROM WorkingDay w INN

Sql新手需要帮助

我有一个在Insert上发生SQL触发器的表。看起来是这样的:

ALTER TRIGGER Holiday_ITrig
ON HolidayDate
FOR INSERT
AS
IF NOT EXISTS (
                SELECT
                        ID
                    FROM
                        WorkingDay w
                    INNER JOIN
                        inserted i ON
                            w.ID = I.WorkingDayId
                    WHERE
                        WorkingDayTypeId = 2
                )
BEGIN
    ROLLBACK TRANSACTION
END

但是,我还需要在更新时触发。这在同一个触发器中是可能的,还是我必须创建一个新的“更新”触发器?

只需将
update
添加到操作列表中即可

您需要检查相同的逻辑是否适用于更新以及原始插入

ALTER TRIGGER Holiday_ITrig
ON HolidayDate
FOR INSERT, UPDATE
AS
IF NOT EXISTS (
                SELECT
                        ID
                    FROM
                        WorkingDay w
                    INNER JOIN
                        inserted i ON
                            w.ID = I.WorkingDayId
                    WHERE
                        WorkingDayTypeId = 2
                )
BEGIN
    ROLLBACK TRANSACTION
END

创建新的更新触发器…无论有多少行受到影响,触发器都会运行一次。对于某些行与您的
检查匹配,而某些行与检查不匹配的情况,您的触发器是否正确?