更新/插入时的sql触发器

更新/插入时的sql触发器,sql,triggers,Sql,Triggers,可能重复: 现在,如果我在version表中插入/更新值,我想使用触发器更新is_updated列,但是如何获取更新/插入行的用户ID呢 这是第一次使用触发器,有人能帮我吗?在发布这样的问题之前,您可能应该先查看books online关于该声明的文档。触发器只不过是一个特殊的存储过程,它继承两个特殊的虚拟表(插入表和删除表)。因此,请尝试以下方法: create trigger dbo.version_TR01 on dbo.version for insert, u

可能重复:

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


这是第一次使用触发器,有人能帮我吗?

在发布这样的问题之前,您可能应该先查看books online关于该声明的文档。触发器只不过是一个特殊的存储过程,它继承两个特殊的虚拟表(插入表和删除表)。因此,请尝试以下方法:

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

这应该差不多了。

您能指定哪个数据库是mySQL、SQL Server、Oracle吗?如果您使用的是SQL Server,请不要;不要忘记编写触发器来处理多行插入。但是@vikram是正确的,我们无法帮助uyou,除非您告诉我们什么数据库作为触发代码根据数据库的不同而不同。
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