CREATE TRIGGER [test_trigger] ON [dbo].[test]
FOR DELETE
AS
begin
set XACT_ABORT on
declare @sn_del varchar(20),@sn_ins varchar(20),@cun as int,@temp varchar(20)
set @sn_del=''
set @sn_ins=''
select @sn_del=id from deleted del where num>40
select @sn_ins=id from inserted ins where num>40
if (@sn_del='' and @sn_ins='' )
begin
set @temp=''
end
else
begin
select @cun=count(*) from test where id=@sn_ins
if @cun>0
begin
delete test where operatorid=@sn_ins
给你个事例,将满足name='jz'的记录删除
CREATE TRIGGER [test_trigger] ON [dbo].[test]
FOR DELETE
AS
begin
set XACT_ABORT on
declare @sn_del varchar(20),@sn_ins varchar(20),@cun as int,@temp varchar(20)
set @sn_del=''
set @sn_ins=''
select @sn_del=id from deleted del where name='jz'
select @sn_ins=id from inserted ins where name='jz'
if (@sn_del='' and @sn_ins='' )
begin
set @temp=''
end
else
begin
select @cun=count(*) from test where id=@sn_ins
if @cun>0
begin
delete test where operatorid=@sn_ins
end
else
begin
delete test where operatorid=@sn_del
end
end
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
--删除触发器例子:
create table t(id int,name varchar(10),num int)
insert into t(id,name,num)
select 1, 'ukyo', 32 union all
select 2, 'xh', 43 union all
select 3, 'ux', 52
go
create trigger [tr_delete] on t
for delete
AS
if exists(select * from deleted where num<=40)
begin
rollback transaction
raiserror('num<=40,不允许删除!!!',16,1)
end