题目:
创建职工表以及职工工资表
职工表字段:工号,姓名,性别,年龄
工资表字段:编号自增,职工工号,基础工资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;