MySQL 触发器

1、什么是触发器

  触发器是用户定义在关系表上的一类由事件驱动的数据库对象,也是一种保证数据完整性的方法。触发器一旦定义,无须用户调用,任何对表的修改操作均为数据库服务器自动激活相应的触发器

 

2、创建触发器

-> create trigger mysql_test.customers_insert_trigger after insert
->on mysql_test.customers for each row set @str = 'one customer added'


//@str表示用户变量
//这里表示有数据插入时 str变为one customers added

 

3、插入一条数据触发触发器

->insert into customers
->values(1001,"张三",19,"");

->select @str;

//插入一条数据,改变了用户变量的值,我们应该直接查看用户变量,而不是原表

 

4、删除触发器

drop trigger if exists mysql_test.customers;

//删除一个触发器

 

5、触发器的种类

  insert 触发器

  delete触发器

  update触发器

insert触发器

在insert触发器代码内,可引用一个名为new(不区分大小写)的虚拟表,来访问被插入的行
在before insert触发器中,new中的值可以被跟新

new即被插入的数据

->create trigger mysql_test.customers_insert2 after insert
->on mysql_test.customers for each row set @str = new.cust_id;
//制定了触发器的触发规则

->insert into customers
->values("1002","李四",22,"男");
//插入一行数据进行触发

->select @str;
//重新查看用户变量,查看是否被触发

delete触发器
在delete触发器代码内,可引用一个名为OLD(不区分大小写)的虚拟表,来访问被删除的行。
OLD中的值全部都是只读的,不能被更新。


->create trigger mysql_test.customers_delete after detele
->on mysql_test.customers for each row set @str = old.name;
//制定触发器规则

->delete from from mysql_test.customers
->where id = 1001;
//对触发器进行触发

->select @str;
//查看触发器
update触发器 = 先delete  后 insert
在update触发器代码内,可引用一个名为OLD(不区分大小写)的虚拟表,来访问update语句执行前的值,也可以引用一个名为new(不区分大小写)的虚拟表来访问跟新后的值。


->create trigger mysql_test.customers_update_trigger before update
->on mysql_test.customers  for each row
->set new.cust_address = OLD.cust_contact;
//创建触发器规则
->update mysql_test.customers set cust_address = '武汉市' ->where cust_name = '曾伟';
->select cust_address from mysql_test.customers ->where cust_name = '曾伟';

 

posted @ 2019-08-24 21:18  极客海  阅读(272)  评论(0)    收藏  举报