gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:58:55 29 4
gpt4 key购买 nike

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

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

EXEC UpdateProfile (SELECT UserId FROM updated AS U);

END
GO

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

最佳答案

如果您确定只会更新一个值,您就可以执行此操作...

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 代码移至触发器中即可。

关于SQL 触发器 - 如何获取更新的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796281/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com