如何创建删除客户时显示指定提示信息的数据库触发器?
解决方案
针对你要在删除客户时显示指定消息的需求,我给你整理了两种主流数据库的触发器实现方式,你根据自己用的数据库来选就行:
MySQL 版本
首先,MySQL里因为触发器体包含多条语句,我们需要先临时修改语句分隔符,避免语法错误,具体代码如下:
DELIMITER // CREATE TRIGGER after_customer_delete AFTER DELETE ON customer FOR EACH ROW BEGIN -- 拼接并输出删除提示消息 SELECT CONCAT('Customer Number ', OLD.customer_num, ' is deleted') AS deletion_notification; END // DELIMITER ;
简单解释:
DELIMITER //:临时把语句结束符改成//,这样触发器体里的分号不会被MySQL当成整个语句的结束AFTER DELETE ON customer:指定这个触发器在customer表执行删除操作之后触发FOR EACH ROW:每删除一条客户记录,就执行一次触发器里的逻辑OLD.customer_num:代表被删除那一行的customer_num值,用CONCAT把它拼进提示消息里
测试的时候,执行这条删除语句:
DELETE FROM customer WHERE customer_num = '217';
就能看到预期的Customer Number 217 is deleted消息输出了。
SQL Server 版本
如果用的是SQL Server,写法会有点不一样,它用PRINT输出消息,并且通过deleted系统表获取被删除的记录:
CREATE TRIGGER after_customer_delete ON customer AFTER DELETE AS BEGIN DECLARE @deleted_cust_num VARCHAR(10); -- 从deleted表获取被删除的客户编号 SELECT @deleted_cust_num = customer_num FROM deleted; -- 输出提示消息 PRINT 'Customer Number ' + @deleted_cust_num + ' is deleted'; END;
解释:
deleted是SQL Server内置的临时表,会存储刚被删除的记录数据- 先声明变量
@deleted_cust_num存客户编号,再从deleted表取出值,最后用PRINT输出拼接好的消息
执行同样的删除语句,就能看到对应的提示了。
内容的提问来源于stack exchange,提问作者J.Speer
相关产品推荐
相关产品推荐

