SQL触发器自行删除

时间:2013-03-13 10:20:32

标签: c# .net sql sql-server

我有一些表,我已经安装了触发器,如: BookingBookingDetailsReservationReservationDays

触发器接受插入和更新的值,并将它们插入另一个名为(TransTBL)的表中的单独数据库中 当我的应用程序在这些表中插入(在一个按钮事件中)时,(BookingBookingDetailsReservation)的触发器仅被触发,然后触发(BookingDetails和{ {1}})被删除我不知道为什么?!

可能导致这种情况的原因是什么?

触发样本:

ReservationDays

2 个答案:

答案 0 :(得分:0)

使用SSMS中的架构更改历史记录报告查看删除的时间和人员:右键单击SSMS中的数据库,报告/标准报告/架构更改历史记录。

答案 1 :(得分:0)

当有人忘记在触发器定义之后放置GO并且脚本的下一部分做了某种下降时,我发现类似的事情发生了。像这样:

create table T (ID int not null)
go
create table V (ID int not null)
go
create table U (ID int not null)
go
if exists(select * from sys.objects where name='T_I')
begin
    drop trigger T_I
end
go
create trigger T_I on T
instead of insert
as
    insert into V (ID) select ID from inserted
--<-- No GO here!
if exists(select * from sys.objects where name='U_I')
begin
    drop trigger U_I
end
go
create trigger U_I on U
instead of insert
as
    insert into V (ID) select ID from inserted

现在使用第一个触发器:

select * from sys.triggers
go
insert into T(ID) values (1),(2)
go
select * from sys.triggers

结果:

T_I
U_I

然后

T_I