数据库之触发器

什么是触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程。可以使用触发器来实现数据约束,数据验证,数据复制等功能。

触发器的作用

可以实现数据约束,数据验证,数据复制等功能

1:可以创建一个触发器,在向表中插入一条记录时,自动向另一个表中插入一个记录,从而实现数据复制的功能。

2:在插入或更新数据时,检查记录的某些字段是否符合要求,则拒绝插入或者更新,这样可以保证数据的完整性和一致性。

创建触发器
create trigger 触发器名称
{before | after } {insert | update | delete}  -- 触发器类型和事件
on 表名称
for each row  -- 触发器的作用范围
begin
    -- 触发器执行的操作
end;
触发器语法说明

(1)只有表的拥有者,即创建表的用户才能在表上创建触发器。

(2)触发器只能作用在基本表上,不能定义在视图上。

(3)触发时间可以是INSERT,DELETE,UPDATE。也可以是这几个事件的组合,如INSERT OR DELETE等,还可以是UPDATE OF<触发列...>,即进一步指明修改哪些列时激活触发器。AFTER/BEFORE是触发的时机。AFTER表示在触发事件的操作执行之后激活触发器,BEFORE表示在触发事件的操作执行之前激活触发器。

 触发器类型

触发器分为行级触发器(FOR EACH ROW )和语句级触发器(FOR EACH STATEMENT)

例子
插入事件
创建两个表
create table test1(
    id int,
    name varchar(20) character set utf8
)charset =utf8;

create table test2(
    id int,
    name varchar(20) character set utf8
)charset =utf8;
创建触发器
-- 创建一个触发器,当向表中插入一条记录时,自动向另一个表中插入一条记录
create trigger insert_trigger_1
    after insert on test1
    for each row
begin
    -- 触发器的具体事件
    insert into test2(id,name) values (NEW.id,New.name);
end;
 插入操作
insert into test1(id,name) values (1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六'),(5,'唐七'),(6,'老王');
查询表tes1
select *from test1;

查询表test2
select *from test2;

删除事件
创建触发器
Create trigger delete_trigger_1
after delete on test1
    for each row 
begin 
    delete from test2 where id=old.id and name=old.name
end;
 删除操作
delete from table1 where id = 5 and name = '王五';
 查询表

激活触发器

一个数据表中可以定义多个触发器,如多个BEFORE触发器,多个AFTER触发器,同一个表上的多个触发器激活时遵循的执行规则:

(1)执行该表上的BEFORE触发器

(2)激活触发器的SQL语句

(3)执行该表的AFTER触发器

删除触发器

DROP TRIGGER <触发器名> ON <表名>

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值