我想针对一个表用触发器完成一些功能,这些功能有的是在insert和update的时候完成的,有的是在delete的时候完成的,我又不是很想在一个表上做很多(2到3个)触发器,我能不能做个触发器针同时对insert、update、delete的,至于是在这些操作的前面发生还是后面发生我不太关心,我能不能在触发器里进行条件判断,根据不同的动作进行不同的操作;目前我可以判断当update某个字段的时候进行某些操作,
if update(字段名)
begin
print 'adsf'
end而我一下找不到insert和delete的条件,不知道那位试过????
if update(字段名)
begin
print 'adsf'
end而我一下找不到insert和delete的条件,不知道那位试过????
Inserted不為空,Deleted為空 --Insert
Inserted不為空,Deleted不為空 --Update
for insert,update,delete
as
begin
if not exists (select 1 from deleted)
begin
print '插入操作'
end
else if NOT exists (select 1 from inserted)
begin
print '删除操作'
end
else
begin
'更新操作'
end
end
end
begin
if exists(select 1 from inserted)
print 'Update'
else
print 'Delete'
end
else
print 'Insert'
FOR UPDATE,INSERT,DELETE
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT * FROM DELETED) --插入
BEGIN
...............
END
ELSE IF NOT EXISTS (SELECT * FROM INSERTED)--删除
BEGIN
.......................
END
ELSE --更新
BEGIN
....................
END
SET NOCOUNT OFFEND
但是,关键的问题是写触发器必须对触发器的运行机制和你自己需要触发器做的工作相当了解,综合考虑各种操作,这样写的触发器才有效率。不知为不知,不要攻击人
我本人来这个论坛刚刚一个月,得到了众多朋友的热心帮助,并且在参与回帖的过程中学到了很多新知识,深感帮助别人的荣尚和被别人帮助的感激之情,决不会出言不逊.在此真诚的楼主道歉,请楼主和楼上批评指正的朋友原谅.