回答

收藏

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

技术问答 技术问答 233 人阅读 | 0 人回复 | 2023-09-14

如何在SQL在触发器中获得更新的记录值-像这样:
1 z. h( R% F: L& @CREATE TRIGGER TR_UpdateNew   ON  Users   AFTER UPDATEAS BEGIN    SET NOCOUNT ON;    EXEC UpdateProfile (SELECT UserId FROM updated AS U);ENDGO这显然不起作用,但你可以看到我想尝试什么。
! u" A' W. o; V/ o: X1 w                                                               
* o: [8 \* d3 L% Q    解决方案:                                                               
, q/ ^! p* m- r; H, v4 y" @+ Z                                                                如果您 确定    如果只更新一个值,则可以执行此操作…
6 e' s7 v% |. k5 [# |# {CREATE TRIGGER TR_UpdateNew   ON  Users   AFTER UPDATEAS 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;ENDGO若能一次更新多个值,则此代码将只处理其中一个。(尽管没有错。
. h& r* x+ s. |如果是游标,可以使用游标或者SQL Server表变量可用于 2008 。
; V% W+ k0 z8 ^) t或者,更常见的是,只需要StoredProcedure代码移动到触发器。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则