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;
相关推荐
Nturmoils1 小时前
集中式与分布式怎么选:从订单读写看 KingbaseES 的架构边界
数据库
xiaomuzuirenzhen1 小时前
大专电子商务从事电商运营分析师需要考证吗?
大数据·数据库
翔云1234563 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
DevOpenClub4 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
GeW5 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux·数据库
在多学一点7 小时前
MYSQL第二次作业
android·数据库·mysql
yeccheng7 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
Risehuxyc7 小时前
Microsoft.Data.Sqlite体验
数据库·sqlite
骑着蜗牛撵大象3277 小时前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
android·数据库·sql·mysql·优化器·执行计划
ZENERGY-众壹8 小时前
告警风暴怎么压?100MW 电站监控平台告警引擎架构复盘
数据库·架构·iot·电站监控