MySQL触发器

一、题目要求

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

二、创建表

2.1创建职工表
CREATE TABLE tab1(
	id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20),
	sex ENUM('m','f'),
    age INT
);
2.2创建职工工资表
CREATE TABLE tab2(
	id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20),
    salary DOUBLE(10,2)
);

三、创建触发器

3.1创建触发器1 INSERT  对职工进行添加时 工资表中也要体现当前职工的信息
DELIMITER $
CREATE TRIGGER tab1_insert_trigger 
	AFTER INSERT ON tab1
	FOR EACH ROW
	BEGIN
		INSERT INTO tab2 VALUES (NULL,new.name,10000);
	END$

//添加职工信息验证
INSERT INTO tab1 VALUES (1,'张三','f',18)$
INSERT INTO tab1 VALUES (2,'hh','m',22)$
INSERT INTO tab1 VALUES (3,'李四','f',30)$

 3.2 创建触发器2  UPDATE  对职工进行修改时 工资表中也要刷新当前职工的信息
CREATE TRIGGER tab1_update_trigger
	AFTER UPDATE ON tab1
	FOR EACH ROW
	BEGIN
		UPDATE tab2 SET name = new.name WHERE name = old.name;
	END$
//测试用户修改
UPDATE tab1 SET name = 'FF' WHERE name = '李四'$

3.3创建触发器3  DELETE 对职工进行删除时 工资表中也要刷新当前职工信息
CREATE TRIGGER tab1_delete_trigger
	AFTER DELETE ON tab1
	FOR EACH ROW
	BEGIN
		DELETE FROM tab2 WHERE name = old.name;
	END$
//用户测试
DELETE FROM tab1 WHERE name = '张三'$

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 触发器是一个与表相关联的数据库对象,它在特定的INSERT、UPDATE或DELETE语句执行时自动执行。MySQL 触发器可以用于实现一些复杂的业务逻辑,比如在插入或更新数据时自动计算某些值、限制特定操作的执行等。 MySQL 触发器分为三种类型:BEFORE、AFTER和INSTEAD OF。BEFORE触发器在执行INSERT、UPDATE或DELETE语句之前执行,可以用于验证数据的合法性、修改数据等;AFTER触发器在执行INSERT、UPDATE或DELETE语句之后执行,可以用于记录日志、更新相关数据等;INSTEAD OF 触发器可以在执行INSERT、UPDATE或DELETE语句时替换原始的操作,可以用于实现自定义的数据更新逻辑。 MySQL 触发器的语法如下: ```sql CREATE TRIGGER trigger_name BEFORE|AFTER|INSTEAD OF INSERT|UPDATE|DELETE ON table_name FOR EACH ROW BEGIN -- 触发器执行的 SQL 语句 END; ``` 其中,`trigger_name` 是触发器的名称,`BEFORE|AFTER|INSTEAD OF` 指定触发器的类型,`INSERT|UPDATE|DELETE` 指定触发器要监听的操作类型,`table_name` 是要监听的表名,`FOR EACH ROW` 表示对表中每一行数据都执行触发器逻辑,`BEGIN` 和 `END` 之间是触发器要执行的 SQL 语句。 例如,下面的代码创建了一个在 `users` 表上监听 INSERT 操作的 BEFORE 触发器,用于自动给 `created_at` 字段赋值当前时间戳: ```sql CREATE TRIGGER users_created_at BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.created_at = NOW(); END; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值