-3

可能重复:
SQL Server:如何创建只影响已更新/插入的行的触发器?

  Table User
  Userid(number)
  is_updated(char)

  Table Version
  Version_number(number)
  userid(number)

现在,如果我在版本表中插入/更新值,我想使用触发器更新 is_updated 列,但是如何获取更新/插入行的用户 ID?

这是第一次使用触发器有人可以帮助我吗

4

1 回答 1

0

在发布这样的问题之前,您可能应该查看有关CREATE TRIGGER语句的在线书籍文档。触发器只不过是一个特殊的存储过程,它继承了两个特殊的虚拟表,inserteddeleted。所以尝试这样的事情:

create trigger dbo.version_TR01
on             dbo.version
for insert, update
as
begin

  --
  -- make sure everybody has a row in the user table
  --
  insert dbo.[user]( user_id , is_updated )
  select i.user_id , 'F'
  from inserted i
  where not exists ( select *
                     from dbo.[user] u
                     where u.user_id = i.user_id
                   )

  --
  -- mark everybody as updated
  --
  update dbo.[user]
  set is_updated = 'T'
  from dbo.[user] u
  join inserted   i on i.user_id = u.user_id

end

那应该差不多了。

于 2012-07-30T18:02:41.053 回答