Mysql中触发器的使用示例

场景

触发器

触发器(Trigger)是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语旬来调用,

也不需要手工启动,只要一个预定义的事件发生就会被MySQL自动调用。

 例如,当对一个数据表进行插入、更新或删除等操作时可以激活触发器并执行触发器。

触发程序经常用于加强数据的完整性约束和业务规则等。

触发程序类似于约束,但比约束更灵活,具有更精细、更强大的数据控制能力。

创建触发器

语法格式

CREATE TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_stmt

trigger_name:触发器名称

trigger_time:标识触发时机,可以指定为before或after

trigger_event:标识触发事件,包括INSERT、UPDATE、DELETE

tbl_name:标识建立触发器的表名

trigger_stmt:触发器程序体。

触发器程序可以使用BEGIN和END作为开始和结束,中间包含多条语句

创建一个名为in_newstu的触发器,触发的条件是向数据表test_student中插入数据之前对新插入的id进行求和计算。

CREATE TRIGGER in_newstu BEFORE INSERT ON test_student
FOR EACH ROW SET @ss= NEW.sid+1;

设置变量的初始值为0

SET @ss= 0;

插入数据,启动触发器

INSERT INTO test_student VALUES (6, '张三', NULL, 13, 101);

查询变量

SELECT @ss;

创建一个触发器,当插入的sid等于7时将姓名设为"霸道"

CREATE TRIGGER name_student
BEFORE INSERT
ON test_student
FOR EACH ROW
BEGIN
IF new.sid =7 THEN
SET new.sname ='霸道';
END IF;
END

插入数据并验证

INSERT INTO test_student VALUES (7, '张1', NULL, 13, 101);

SELECT * FROM test_student WHERE sid = 7;

查看触发器

SHOW TRIGGERS;

还可以通过查看系统表查看触发器

SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_NAME = 'name_student';

删除触发器

DROP TRIGGER name_student;

相关推荐

  1. Mysql触发器使用示例

    2024-07-11 17:26:07       22 阅读
  2. MySQL学习——触发器语法和示例

    2024-07-11 17:26:07       25 阅读
  3. Mysql常用函数使用示例

    2024-07-11 17:26:07       21 阅读
  4. MySQL-笔记-09.存储过程及触发器使用

    2024-07-11 17:26:07       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 17:26:07       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 17:26:07       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 17:26:07       58 阅读
  4. Python语言-面向对象

    2024-07-11 17:26:07       69 阅读

热门阅读

  1. 实现前端登录注册功能(有源码)

    2024-07-11 17:26:07       22 阅读
  2. 编程语言:智能制造领域的智慧引擎

    2024-07-11 17:26:07       22 阅读
  3. 通过配置IP路由解决多网卡配置同网段IP的问题

    2024-07-11 17:26:07       23 阅读
  4. ArduPilot开源代码之OpticalFlow_backend

    2024-07-11 17:26:07       23 阅读
  5. Postman API测试覆盖率:全面评估指南

    2024-07-11 17:26:07       22 阅读
  6. OpenHarmony移植小型系统exynos4412(三)

    2024-07-11 17:26:07       22 阅读
  7. 达梦数据库系列—26. DSC主备搭建

    2024-07-11 17:26:07       19 阅读
  8. Mybatis进阶の常用配置&级联查询

    2024-07-11 17:26:07       22 阅读
  9. 【MyBatis】MyBatis 理论 40 问(二)

    2024-07-11 17:26:07       21 阅读
  10. Android --- Kotlin学习之路:Okhttp 同步异步网络请求

    2024-07-11 17:26:07       19 阅读
  11. tomcat

    tomcat

    2024-07-11 17:26:07      16 阅读
  12. 探索 GraphRAG:图结构与生成式模型的融合

    2024-07-11 17:26:07       23 阅读