mysql 触发器trigeer_MySQL触发器trigger

触发器(trigger):监视某种情况,并触发某种操作,触发器必须有名字,最多64个字符,可能后面会附有分隔符.

它和MySQL中其他对象的命名方式基本相象

触发器创建语法四要素:1.监视地点(table) 2.监视事件DML 3.触发时间(after/before) 4.触发事件DML

{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。

{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发

FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。

####执行触发器建议使用ROOT的权限

####使用别名old和new,能够引用与触发程序相关的表中的列。old.col_name在更新或删除它之前,引用已有行中的1列。new.col_name在更新它之后引用将要插入的新行的1列或已有行的1

列,所以要引用update前的列就用old,要引用update后的列就用new

语法:

create trigger triggerName

after/before insert/update/delete on tableName

for each row##固定格式

begin

sql语句;

end;

##来个简单操作:

1、添加两个表:

CREATE TABLE tabA(id INT NOT NULL PRIMARY KEY,c_name VARCHAR(20));

CREATE TABLE tabB(id INT NOT NULL PRIMARY KEY,c_name VARCHAR(20));

2、创建触发器:insert

t_aferinsert_on_tabA

####

DELIMITER $$

CREATE TRIGGER test.t_aferinsert_on_taba

AFTER INSERT ON taba

FOR EACH ROW

BEGIN

INSERT INTO tabb(id,c_name) VALUES(new.id,new.c_name);

END;

$$

DELIMITER;

3、查看taba、tabb表

SELECT a.id AS aid,a.c_name acname,b.id bid,b.c_name bname FROM taba a JOIN tabb b

4、从taba表插入数据:

INSERT INTO taba(id,c_name)VALUES(1,'test triggers')

SELECT a.id AS aid,a.c_name acname,b.id bid,b.c_name bname FROM taba a JOIN tabb b

##UPDATE 简单例子:

DELIMITER $$

CREATE TRIGGER t_aferupdate_on_taba

AFTER UPDATE ON taba

FOR EACH ROW

BEGIN

UPDATE tabb SET c_name=new.c_name WHERE id=new.id;

END;

$$

DELIMITER;

###DELETE:

DELIMITER $$

CREATE TRIGGER t_aferdelete_on_taba

AFTER DELETE ON taba

FOR EACH ROW

BEGIN

DELETE FROM tabb WHERE id=old.id;

END;

$$

DELIMITER;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值