如何在 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(使用前将#替换为@)