我在尝试分析某些数据库时偶然发现了这个触发器:
Create trigger [tbl_Details_Trigger] on [tbl_Details]
Instead of Insert
As
Insert into [tbl_Details]
Select * from inserted
在我看来,这个触发器并没有做任何特别的事情,即使它被丢弃,结果也是一样的。我对吗?我错过了什么吗?
我在尝试分析某些数据库时偶然发现了这个触发器:
Create trigger [tbl_Details_Trigger] on [tbl_Details]
Instead of Insert
As
Insert into [tbl_Details]
Select * from inserted
在我看来,这个触发器并没有做任何特别的事情,即使它被丢弃,结果也是一样的。我对吗?我错过了什么吗?
你是对的; 因为这个触发器是一个
INSTEAD OF INSERT
触发器,它只是将插入的数据插入到触发器定义的表中,所以唯一的结果将是插入数据,就好像触发器不存在一样。与所有更改一样,在生产中删除此触发器之前,请确保在开发/测试环境中测试更改。
有趣的是,如果表包含一
IDENTITY
列,您将无法创建触发器。考虑这个在 SQL Server 2016+ 上运行的重现:结果: