视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql的触发器同数据库多表的数据操作_MySQL
2020-11-09 18:44:53 责编:小采
文档


bitsCN.com

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

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

一.触发器的基本语法:

1、命名规则

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

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

2、触发器的创建

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

3、基本的设置

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

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

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='ict_tak';//对其它表操作end

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

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

bitsCN.com

下载本文
显示全文
专题