当前位置:网站首页>mysql 触发器
mysql 触发器
2022-07-28 05:20:00 【大数据小理】
MySQL 触发器
#举例一
#1.创建数据表
CREATE TABLE test_trigger (
id INT PRIMARY KEY AUTO_INCREMENT,
t_note VARCHAR (30)
) ;
CREATE TABLE test_trigger_log (
id INT PRIMARY KEY AUTO_INCREMENT,
t_log VARCHAR (30)
) ;
#2.创建触发器
DELIMITER //
CREATE TRIGGER before_insert BEFORE INSERT
ON test_trigger FOR EACH ROW
BEGIN
INSERT INTO test_trigger_log (t_log)
VALUES
(‘before_insert’) ;
END //
DELIMITER ;
#3.向test_trigger_log表中插入数据
INSERT INTO test_trigger (t_note)
VALUES
(
‘测试 BEFORE INSERT 触发器’
) ;
#4.查看test_trigger_log中的数据
SELECT *
FROM
test_trigger_log ;
#例二 创建名称为after_insert的触发器,向test_trigger数据表插入数据之后,向test_trigger_log数据表中插入after_insert的日志信息。
#1.创建触发器
DELIMITER //
CREATE TRIGGER after_insert
AFTER INSERT ON test_trigger
FOR EACH ROW
BEGIN
INSERT INTO test_trigger_log(t_log)
VALUES(‘after_insert’);
END //
DELIMITER ;
#2.向test_trigger中插入数据
INSERT INTO test_trigger(t_note)
VALUES(‘测试AFTER INSERT 触发器’);
#查看test_trigger_log数据表中的数据
SELECT * FROM test_trigger_log;
#例3:定义触发器“salary_check_trigger”,基于员工表“employees”的INSERT事件,在INSERT之前检查将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value为’HY000’的错
#误,从而使得添加失败。
DELIMITER //
CREATE TRIGGER salary_check_trigger
BEFORE INSERT ON employees FOR EACH ROW
BEGIN
DECLARE mgrsalary DOUBLE;
SELECT salary INTO mgrsalary FROM employees
WHERE employee_id=NEW.manager_id;
IF NEW.salary>mgrsalary THEN
signal SQLSTATE'HY000'SET message_TEXT='薪资高于领导薪资错误';
END IF;
END //
DELIMITER ;
INSERT INTO employees(employee_id,last_name,email,hire_date,job_id,salary)
VALUES(9999,‘kopp’,‘[email protected]’,‘2022-2-01’,8999,99999);
#能添加成功说明触发器设置错误,只是报了一个警告
SELECT * FROM employees;
DELETE FROM employees
WHERE employee_id=999 OR employee_id=9999;
#上面触发器声明过程中的new关键字代表insert添加语句的新纪录
#因为插入的工资太大
#查看test_trigger_log数据表中的数据
SELECT * FROM test_trigger_log;
#查看,删除触发器
#查看当前数据库中所有触发器的定义
SHOW TRIGGERS;
#查看当前数据库中某个触发器的定义
SHOW CREATE TRIGGER after_insert;
#从数据库中information_schema的triggers表中查询触发器
SELECT * FROM information_schema.TRIGGERS;
#删除触发器
DROP TRIGGER IF EXISTS 触发器名;
边栏推荐
猜你喜欢

进程线程协程的区别

(php毕业设计)基于php小说网站管理系统获取

Some problems of ArcGIS Engine Installation

(php毕业设计)基于php校园网络报修管理系统获取

DOM——页面的渲染、style属性操作、预加载与懒加载、防抖与节流

Thinking on Architecture Design (SSO design)

CAD-GIS数据转换

结果填空 凑算式(DFS*C语言)

发售预告:7月22日“大暑”发售,【传统国风廿四节气】夏季发售完毕。

Review of metallurgical physical chemistry -- cathodic polarization, overpotential, anode and anode process in metal electrodeposition
随机推荐
命令注入绕过方式总结
扩展欧几里得定理
curd组件中的时间设置
regular expression
Books - smart investors
Thinking on Architecture Design (SSO design)
Related concepts and operations of DOM model
(php毕业设计)基于php水果销售商店管理系统获取
Microsoft Edge浏览器插件(1)
Add the corresponding subscripts of multiple arrays in the object
(php毕业设计)基于php学生日常行为管理系统获取
蓝桥代码 翻硬币(我这样写也通过了,官网测试是不是有问题)
[interview question] anti shake and throttling
ArrayList multithreading security solution
书籍-投资理念和策略
ArcGIS Engine开发资源
基于Easy CHM和VS的帮助文档制作
Flex elastic box item properties
Microsoft edge browser plug-in (2)
Microsoft Edge浏览器插件(2)