创建触发器删除、更新、插入

一、通过可视化界面创建

将表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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值