一、通过可视化界面创建
将表student的设计表打开,点击触发器
注意此处有一个触发时间,若希望验证新数据是否满足使用的限制,可以使用before;若希望在激活触发器的语句执行之后完成几个或多个的改变,可以使用after。
1、创建DELETE触发程序
DELETE:从表中删除某一行时激活触发器,利用delete语句
这里是激活触发器的语句执行之后完成几个或多个的改变所以使用after,输入如下的代码
在delete触发程序中仅仅使用old.name,没有新行
BEGIN
DELETE FROM score WHERE student_id = old.student_id;
END
2、创建UPDATE触发程序
UPDATE:更改某一行时激活触发器,利用update语句
这里选择的是after触发时间,则输入如下代码
update触发程序,可以使用old.name来引用更新前的某一行的列,也可以使用new,name来引用更新后的行中的列。用old命名的列是只读的,可以引用它,但是不能改变它。对于用new命名的列,如果具有select权限,可以引用它。
BEGIN
UPDATE score SET student_id = new.student_id WHERE student_id = old.student_id;
END
3、创建INSERT触发程序
insert:将新行插入表时激活触发器,通过insert、load data、replace语句
此处时新数据是否满足使用的限制,所以用before
insert触发程序中,仅使用new.name ,没有旧行
代码如下
test3
BEGIN
IF new.student_age<16 THEN SET new.student_age = 16;
END if;
END
test4
BEGIN
IF new.student_sex ='男' THEN SET new.student_sex = '男性';
END if ;
IF new.student_sex ='女' THEN SET new.student_sex = '女性';
END if;
END
二、通过sql语句创建
1、创建DELETE触发程序
代码如下
CREATE TRIGGER `test1` BEFORE DELETE ON `student` FOR EACH ROW BEGIN
DELETE FROM score WHERE student_id = old.student_id;
END
2、创建UPDATE 触发程序
代码如下
CREATE TRIGGER `test2` BEFORE DELETE ON `student` FOR EACH ROW BEGIN
UPDATE score SET student_id = new.student_id WHERE student_id = old.student_id;
END
3、创建INSERT触发程序
代码如下
CREATE TRIGGER `test3` BEFORE DELETE ON `student` FOR EACH ROW BEGIN
IF new.student_age<16 THEN SET new.student_age = 16;
END if;
END
CREATE TRIGGER `test4` BEFORE DELETE ON `student` FOR EACH ROW BEGIN
IF new.student_sex ='男' THEN SET new.student_sex = '男性';
END if ;
IF new.student_sex ='女' THEN SET new.student_sex = '女性';
END if;
END