关于使用sql server 2008触发器完成修改一张表里一个字段同时修改另一张表的另一字段

CREATE TRIGGER UpdateTable
on User_Sample
after update
AS BEGIN
declare @userType int
--得到更改的字段值
set @userType='2'
--得到表1和表2关联的id,也就是外键,table2的ID
declare @userId int

set @userId = (select userId FROM User_Sample )
-- 更新表2 "
update Users set Usertype=@userType where Users.userId =@userId
END
GO
UPDATE [User_Sample] SET [state] = 'True' WHERE [id] = '2'
((select userId FROM User_Sample 获取的是多个值,求有办法至获取修改的那个字段的id莫?
最新回答
九四鳁鲸

2024-10-24 06:58:55

触发器中有两个临时表inserted 和deleted
这两个表的表结构与创建触发器的表是一样的
inserted存储的是新插入或更新后的最新资料
deleted存储的是删除的或修改前的资料。
你可以通过inserted表来获得你更新后的值,然后再用这个值来更新另外的那个表,如不清楚可再追问。
天暗下来你就是光

2024-10-24 04:54:22

不需要@userid变量,触发器中可以用inserted与deleted来获取修改删除前的数据
update Users set Usertype=@userType where Users.userId in
(select userid from deleted)