迅闻网
让更多人看到你

mysql触发器怎么写(mysql同步表触发器)

  mysql触发器怎么写

触发器是与MySQL数据表有关的数据库目标,在满意界说条件时触发,并履行触发器中界说的句子调集。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
语法格式如下:
CREATE<触发器名><BEFORE|AFTER>
ON<表名>FOREACHRow<触发器主体>
语法说明如下。
1)触发器名
触发器的称号,触发器在当时数据库中有必要具有仅有的称号。假如要在某个特定数据库中创立,称号前面应该加上数据库的称号。
2)INSERT|UPDATE|DELETE
触发事情,用于指定激活触发器的句子的品种。
注意:三种触发器的履行时间如下。INSERT:将新行刺进表时激活触发器。例如,INSERT的BEFORE触发器不仅能被MySQL的INSERT句子激活,也能被LOADDATA句子激活。DELETE:从表中删去某一行数据时激活触发器,例如DELETE和REPLACE句子。UPDATE:更改表中某一行数据时激活触发器,例如UPDATE句子。
3)BEFORE|AFTER
BEFORE和AFTER,触发器被触发的时刻,表明触发器是在激活它的句子之前或之后触发。若希望验证新数据是否满意条件,则运用BEFORE选项;若希望在激活触发器的句子履行之后完成几个或更多的改动,则一般运用AFTER选项。
4)表名
与触发器相相关的表名,此表有必要是永久性表,不能将触发器与临时表或视图相关起来。在该表上触发事情产生时才会激活触发器。同一个表不能拥有两个具有相同触发时刻和事情的触发器。例如,关于一张数据表,不能一起有两个BEFOREUPDATE触发器,但可以有一个BEFOREUPDATE触发器和一个BEFOREINSERT触发器,或一个BEFOREUPDATE触发器和一个AFTERUPDATE触发器。
5)触发器主体
触发器动作主体,包括触发器激活时即将履行的MySQL句子。假如要履行多个句子,可运用BEGIN…END复合句子结构。
6)FOREACHROW
一般是指行级触发,关于受触发事情影响的每一行都要激活触发器的动作。例如,运用INSERT句子向某个表中刺进多行数据时,触发器会对每一行数据的刺进都履行相应的触发器动作。
注意:每个表都支撑INSERT、UPDATE和DELETE的BEFORE与AFTER,因此每个表最多支撑6个触发器。每个表的每个事情每次只允许有一个触发器。单一触发器不能与多个事情或多个表相关。
别的,在MySQL中,若需要查看数据库中已有的触发器,则可以运用SHOWTRIGGERS句子。
例子:
BEGIN
IFnew.statein(‘2′,’3′)then
INSERTINTO`userservice`.`ehome_us_green_examine`
(modifydate,modifyuser,brancCode,stateDescription,state,
userID,fromSystemkey,applydate,makeHospitalName,illnessName,
userName,rightsholderName,tranno)
VALUES(sysdate(),’manage’,old.brancCode,old.stateDescription,new.state,
”,old.fromSystemkey,old.applydate,old.makeHospitalName,old.illnessName,
old.userName,old.rightsholderName,old.tranno);
ENDIF;
END
这个触发器比较简单,
1、BEGIN到END,之间是对数据库的操作
2、IF到ENDIF之间是判别,你想的对,便是假如。。。的意思
3、new.statein(‘2′,’3’)这句的意思是:该表的字段state为(2或许3)的时候
4、履行下面的刺进句子,new为新值,old是本来的值(如old.userName便是本来的这个字段的值)
5、整个触发器翻译成白话便是,假如该表的state变成2或许3的时候,履行下面的刺进句子

mysql

mysql同步表触发器

mysql经过触发器实现两个表的同步
目前,在本地测验成功。
假设本地的两个数据库a和b,a下有表table1(id,val)b下有表table2(id,val)
假设希望当table1中数据更新,table2中数据同步更新。
代码:
DELIMITER$$
CREATE
/*[DEFINER={user|CURRENT_USER}]*/
TRIGGER`a`.`触发器名`BEFOREUPDATE
ON`a`.`table1`
FOREACHROWBEGIN
IFnew.id!=old.idTHEN
UPDATE`b`.`table2`SET`b`.`table2`.id=new.idWHERE`b`.`table2`.val=old.val;
ENDIF;
END$$
DELIMITER;
网上找了很多代码,在phpadmin中运行都不成功,总是语法错误,phpmyadmin也不能可视化树立触发器,所以找了另一个mysql管理东西,SQLyog。这个东西比较好,java写的,可以经过界面创立触发器,然后再把代码拷到phpmyadmin中运行,成功!

未经允许不得转载:迅闻网 » mysql触发器怎么写(mysql同步表触发器)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页