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;
相关推荐
q***58198 分钟前
【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
数据库·sql·mysql
懒羊羊不懒@13 分钟前
【MySQL | 基础】多表查询
数据库·sql·mysql
百***69721 分钟前
redis 使用
数据库·redis·缓存
mit6.82423 分钟前
[Column] 构建十亿/s级DB | 索引DB&RTDB | Kafka 为中心 | Rust 构建引擎
数据库
q***05641 分钟前
在Mysql环境下对数据进行增删改查
数据库·mysql
爬山算法43 分钟前
Redis(124)Redis在电商系统中的应用有哪些?
数据库·redis·缓存
武子康1 小时前
Java-170 Neo4j 事务、索引与约束实战:语法、并发陷阱与速修清单
java·开发语言·数据库·sql·nosql·neo4j·索引
数据库学啊2 小时前
靠谱的时序数据库哪家技术强
数据库·时序数据库
Wang's Blog2 小时前
MySQL: 存储引擎深度解析:CSV与Archive的特性、应用与实战演示
数据库·mysql
q***07143 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot