更新/插入时的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