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;
相关推荐
代码的奴隶(艾伦·耶格尔)几秒前
Hbase GUI 可视化软件
大数据·数据库·hbase
快乐非自愿几秒前
2026年Django生态现代化组件深度解析与实践
数据库·django·sqlite
それども1 分钟前
SQL NOT EXISTS理解
数据库·sql
数据知道4 分钟前
MongoDB链式复制:配置 Chained Replication 优化跨机房同步
数据库·mongodb
brucelee1864 分钟前
芋道 Spring Boot 框架 + AWS S3 图片上传显示
java·开发语言·数据库
222you7 分钟前
MongoDB的安装和整合SpringBoot
数据库·spring boot·mongodb
jioulongzi7 分钟前
mybatis映射mysql_json字段, 自定义typehandler返回null
mysql·json·mybatis
EnglishJun7 分钟前
Linux系统编程(十)--- 数据库Sqlite3
数据库·sqlite
秦jh_8 分钟前
【Redis】通用命令、string类型
数据库·redis·缓存
不懒不懒8 分钟前
【苏宁易购商品评价文本分析实战:从自动化爬取到分词清洗全流程】
运维·数据库·自动化