Heim > Datenbank > MySQL-Tutorial > mysql的触发器同数据库多表的数据操作_MySQL

mysql的触发器同数据库多表的数据操作_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:30:04
Original
1138 Leute haben es durchsucht

bitsCN.com

mysql的触发器同数据库多表的数据操作

 

摘要: 为了不改原有代码,实现客户端和服务端数据同步,为每个需要同步数据的表加上触发器。 介绍一下这个是对同一数据库中不同表的操作。在一张表中操作时,需要对其他表进行修改操作。

 

一.触发器的基本语法:

 

1、命名规则

 

CREATE TRIGGER BEFORE<触发器名称> <{//触发器必须有名字,最多64个字符,可能后面会附有分隔符  | AFTER }  //触发器触发时间是在事件之前触发还是之后触发(也可以在过程中触发){ INSERT | UPDATE | DELETE  //触发器三种事件}
Nach dem Login kopieren

ON <表名称>FOR EACH ROW<触发器SQL语句> //语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样

2、触发器的创建

不能给同一张表的同一个事件安排两个触发器,但是可以给同张表定义多个触发器(如:在同一张表对Insert事件定义一个触发器,对update再定义一个触发器)

3、基本的设置

给触发器设置权限:Gank create trigger on <表名> to 用户。回收权限:Revoke create trigger on 表明 from 用户删除触发器:drop TRIGGER 触发器名
Nach dem Login kopieren

MyISAM:不支持事务,用于只读程序提高性能

InnoDB:支持ACID事务、行级锁、并发

Berkeley DB:支持事务

二:触发器语句

背景:在不修改原工程的情况去做安卓端和服务端的同步操作。为已经存在的项目里面的数据库建张表ict_table_version,然后在需要同步的表上加上一个字段version。(同步方案看文档)。

在需要同步的表上创建触发器。当表进行事物操作时,此表上的rowversion字段取最大值+1,同时ict_table_version表里面的version+1。语句:

CREATE TRIGGER ilt_tak_trigger before update //after出错不知为何ON ilt_takFOR each rowbegin
Nach dem Login kopieren

SET new.rowversion = (select max(rowversion)+1 from ict_tak) ;//new是获取前期记录标识。对于Insert语句,只有new是合法的,对于deleted语句,只有old是合法的。对于update语句两者都可以使用。

UPDATE ict_table_version  SET version = version+1 WHERE table_name=&#39;ict_tak&#39;;//对其它表操作end
Nach dem Login kopieren

 

 

注意在操作两条语句间没有用“and”而是用“;”。

 

在End前面加上exception  when...then...异常处理语句  End 对异常进行处理。同样,在End前面还可以加上事物回滚。 

 

bitsCN.com
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage