如何在SQL触发器中使用INSERT、DELETE多个触发事件并返回对应提示
SQL触发器事件区分调整方案
调整逻辑
- 现有触发器未区分触发事件类型,无论执行INSERT还是DELETE都会同时返回两条提示
- SQL Server触发器内置两张临时表可用于判断事件类型:
INSERTED:存储INSERT操作新增的记录,仅INSERT触发时非空DELETED:存储DELETE操作移除的记录,仅DELETE触发时非空
- 新增
EXISTS判断逻辑,匹配对应事件后返回指定提示即可
调整后完整代码
DROP TRIGGER IF EXISTS N2Trigger GO CREATE TRIGGER N2Trigger ON dbo.Date FOR INSERT, DELETE AS BEGIN -- 匹配INSERT操作 IF EXISTS(SELECT 1 FROM INSERTED) BEGIN SELECT 'Inserted Datebase' AS MESSAGE END -- 匹配DELETE操作 IF EXISTS(SELECT 1 FROM DELETED) BEGIN SELECT 'Deleted Database' AS MESSAGE END END GO -- 测试DELETE语句,执行后将返回Deleted Database提示 DELETE FROM dbo.[Date] WHERE ID = 1
补充说明
- 代码中
GO为SQL Server专用批处理分隔符,可避免多段语句执行时报语法错误 - 若你使用的是MySQL等其他数据库,可直接通过
IF(INSERTING)/IF(DELETING)内置方法判断事件,核心逻辑一致
内容的提问来源于stack exchange,提问作者user14737070
相关产品推荐
相关产品推荐

