SQL 触发器 - 如何获取更新的值?

2024-04-07

如何在 SQL 触发器中获取更新记录的值 - 如下所示:

CREATE TRIGGER TR_UpdateNew
   ON  Users
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    EXEC UpdateProfile (SELECT UserId FROM updated AS U);

END
GO

显然这行不通,但你可以看到我想要表达的意思。


假设你是certain只有一个值会被更新,你可以这样做......

CREATE TRIGGER TR_UpdateNew
   ON  Users
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @user_id INT
    SELECT
      @user_id = inserted.UserID
    FROM
      inserted
    INNER JOIN
      deleted
        ON inserted.PrimaryKey = deleted.PrimaryKey
        -- It's an update if the record is in BOTH inserted AND deleted

    EXEC UpdateProfile @user_id;

END
GO

如果可以一次更新多个值,则此代码只会处理其中一个值。 (虽然不会出错。)

您可以使用游标,或者如果是 SQL Server 2008+,则可以使用表变量。

或者,更常见的是,只需将 StoredProcedure 代码移至触发器中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 触发器 - 如何获取更新的值? 的相关文章

随机推荐