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;
相关推荐
qq_43696218几秒前
金蝶云星空数据分析怎么做?
java·数据库·数据分析
坐吃山猪14 分钟前
ChromaDB09-数据库操作
数据库·chromadb
IntoTech英途汇骏23 分钟前
数据虚拟化平台选型分析:主流厂商解决方案与技术能力对比
数据库
程序猿阿森35 分钟前
RAG 落地实践:离线索引 + 在线 FAQ 与混合检索全流程拆解
数据库·人工智能·rag
图特摩斯科技36 分钟前
本体建模方式升级:OntoStudio 独创,2D vs 3D 构建本体应用
数据库·3d
天河归来37 分钟前
请求原子性实现方式:Redis 互斥与数据库事务协同
数据库·redis·缓存
Navicat中国44 分钟前
如何将 Navicat 的 AI 助手连接到本地 LLM
数据库·人工智能·navicat·本地llm
Gauss松鼠会1 小时前
GaussDB 内存相关参数及故障诊断
运维·数据库·sql·oracle·性能优化·架构·gaussdb
paopaokaka_luck1 小时前
美食推荐系统(协同过滤算法推荐、AI助手、HanLP中文分词、 ECharts可视化分析、菜谱学习与话题交流)
java·spring boot·mysql·tomcat·echarts
斯普信专业组1 小时前
Redis RESP3 协议规范:从入门到实战
数据库·redis·缓存