Mysql触发器

本文介绍了如何在MySQL中创建职工表和工资表,通过触发器实现职工信息在插入、修改和删除时自动同步到工资表中的功能,包括INSERT触发器处理新员工入职,UPDATE触发器更新工资,以及DELETE触发器处理解聘后的工资调整。
摘要由CSDN通过智能技术生成

题目:
创建职工表以及职工工资表
职工表字段:工号,姓名,性别,年龄
工资表字段:编号自增,职工工号,基础工资10000
通过触发器实现:
对职工进行添加时 工资表中也要体现当前职工的信息
对职工进行修改时 工资表中也要一并修改当前职工的信息
对职工进行解聘时 工资表中也要一并删除当前员工的工资信息

创建职工表

CREATE  TABLE workers(
id  INT(10)  NOT NULL PRIMARY KEY  AUTO_INCREMENT ,
name VARCHAR(40) NOT NULL,
sex ENUM('m','f'),
age INT NOT NULL
);

创建职工工资表

CREATE  TABLE salary(
id  INT(10)  NOT NULL PRIMARY KEY  AUTO_INCREMENT ,
name VARCHAR(20),
salary DOUBLE(10,2)
);

在Navicat中创建触发器
创建INSERT触发器

CREATE TRIGGER workers_insert_trigger
AFTER INSERT ON workers 
FOR EACH ROW
BEGIN
INSERT INTO salary VALUES (NULL,new.name,3000);
END;

在这里插入图片描述
测试用户新增

INSERT INTO workers VALUES (1,'张三','f',10);
INSERT INTO workers VALUES (2,'李四','m',20);
INSERT INTO workers VALUES (3,'王五','f',30);

观察职工表和工资表的变化,会发现工资表中也体现了员工表的信息
在这里插入图片描述
创建UPDATE触发器

CREATE TRIGGER workers_update_trigger
AFTER UPDATE ON workers 
FOR EACH ROW
BEGIN
UPDATE salary SET name = new.name WHERE name = old.name;
END;

在这里插入图片描述
测试用户修改

UPDATE workers SET name = '马六' WHERE name = '张三';

在这里插入图片描述
创建DELETE触发器

CREATE TRIGGER workers_delete_trigger
AFTER DELETE ON workers 
FOR EACH ROW
BEGIN
DELETE FROM  salary WHERE name = old.name;
END;

在这里插入图片描述
测试用户删除

DELETE FROM workers WHERE name = '李四';

在这里插入图片描述

总结:
创建触发器的代码若在终端中报错,可在Navicat中尝试。

触发器的语法
CREATE TRIGGER 触发器名称 BEFORE|AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
触发器程序体;
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值