mysql 触发器

创建触发器

  • 这个需要使用 mysql 触发器,用户删除数据时检测删除的是不是我们设置禁止删除的数据,如果是,则报错,禁止用户删除
mysql 复制代码
DELIMITER $$
# prevent_delete_row 触发器名称
CREATE TRIGGER prevent_delete_row 
# kaili_erp.employee 数据库和表名
BEFORE DELETE ON kaili_erp.employee 
FOR EACH ROW 
BEGIN
    DECLARE msg VARCHAR(255);
    # OLD.字段名 = 值
    IF OLD.uid = '10000' THEN
		# 错误提示消息
        SET msg = 'Cannot delete this row!';
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    END IF;
END;
$$
DELIMITER ;

如果要创建禁止修改的触发器,仅需把 BEFORE DELETE ON 换成 BEFORE UPDATE ON 就可以了

删除触发器

  • 查看已有触发器
mysql 复制代码
SHOW TRIGGERS;
  • 删除触发器
mysql 复制代码
# `trigger_name` 是要删除的触发器名称
# `IF EXISTS` 可以加上,以避免尝试删除不存在的触发器时出现错误
DROP TRIGGER [IF EXISTS] trigger_name;
相关推荐
l1t11 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
执子手 吹散苍茫茫烟波11 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql
落叶-IT12 小时前
Java异常处理深度实战教程:异常传播的失败场景分析
数据库·oracle
执子手 吹散苍茫茫烟波13 小时前
常见的数据库隔离级别以及企业里常用的是什么方案
数据库
Database_Cool_13 小时前
数据库慢查询优化首选方案:阿里云 RDS 性能洞察+自动诊断
数据库·人工智能·阿里云
YOU OU14 小时前
Redis初识
数据库·redis·缓存
长孙豪翔14 小时前
在.net中读写config文件的各种方法
java·数据库·.net
深盾科技_Virbox15 小时前
加密狗授权能力选型:从授权模型到全生命周期管理
java·网络·数据库
峥无15 小时前
深入理解MySQL事务与MVCC机制
数据库·mysql
行思理15 小时前
MongoDB 大数据备份,新手教程
数据库·mongodb