MySQL触发器的应用案例

网友问题:对于MySQL主从复制结构中,如何让Slave过滤delete操作。

问题分析:该问题对应的是保全所有的记录,包括delete的记录。

对于MySQL本身的过滤规则粒度是精确到表的粒度。

主从可以由不同的触发器

问题结果,在slave上建立before触发器,对于delete的记录备份至另一个表。

存在问题,MySQL触发器在高并发下的性能问题。

触发器源代码:

    CREATE TRIGGER delbak BEFORE DELETE ON tb_name
    FOR EACH ROW BEGIN
    INSERT INTO tb_name_bak SELECT * FROM tb_name where id=old.id;
    END

一般where后面跟的字段是唯一标识字段(主码),如果用可重复字段会发生在删除一条记录的时候就在备份表中插入多条记录的问题!

old表示一种状态,删除动作执行之前的表称OLD表,删除动作执行之后的表称NEW表

本文出自 “技术成就梦想” 博客,请务必保留此出处http://weipengfei.blog.51cto.com/1511707/1136830

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/MySQL/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, 问题
, delete
, 触发器
, 字段
, 主从
mysql触发器
mysql应用案例、mysql 触发器、mysql触发器实例、mysql 触发器 insert、mysql 触发器 update,以便于您获取更多的相关知识。

时间: 2024-12-23 09:35:01

MySQL触发器的应用案例的相关文章

mysql触发器 动态创建表

问题描述 mysql触发器 动态创建表 我有一张公司表 company,还有一些表是需要动态生成的,生成规则则是需要根据company的id 所以我现在想要写一个触发器,就是当company表中插入一条记录之后就动态创建表. 触发器的语法我大致看了下,可现在的难点是表名如何写. 想过可能要声明一个变量用来存表名,但是如何在触发器中引用这变量 create trigger tableCreateTrigger after insert on sys_company for each row beg

[数据库] Navicat for MySQL触发器更新和插入操作

  一.触发器概念        触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行.         触发器经常用于加强数据的完整性约束和业务规则等. 触发器创建语法四要素:         1.监视地点(table)         2.监视事件(inse

第一写mysql触发器,请大神帮忙看看哪里错了

问题描述 第一写mysql触发器,请大神帮忙看看哪里错了 detailMsg= IF(NEW.basic_level = 0, CONCAT(new.name, ' - Unlocked'), CONCAT(new.name, ' - Locked')); IF()函数可以这样用的吧 提示这句话有语法错误,我找不出来啊,detailMsg是VARCHAR类型的变量 解决方案 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 &

mysql触发器语法错误问题

问题描述 mysql触发器语法错误问题 CREATE TRIGGER tradecost AFTER UPDATE ON fentrust FOR EACH ROW BEGIN DECLARE old_account DECIMAL(16,6) DECLARE old_fid INT(10) DECLARE trade_account DECIMAL(16,6) SET old_fid = SELECT old_fid FROM fentrust WHERE old.fEntrustType =

求教mysql触发器字段生成流水号

问题描述 求教mysql触发器字段生成流水号 MySql主键流水号要求8位日期(20150725)+4位顺序号(0001),自增不重复 主键流水号用varchar吗?int好像插入不了12位. 求表结构和触发器的演示,谢谢! 解决方案 用varchar类型存储这个流水号. 其实我认为应该用存储过程,不知道你为什么用触发器. http://blog.csdn.net/dengsilinming/article/details/8488626 解决方案二: http://bbs.csdn.net/t

MySQL 触发器的基础操作(六)_Mysql

1.为什么使用触发器:      在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作.在数据库系统中,当执行表事件时,则会激活触发器,从而执行器包含的操作.触发器的操作包含创建.查看.删除.      触发器是数据库对象之一,该对象与编程语言 中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发.激活从而实现执行.例如:在学生表中有学生名字.学生总数字段,每当添加一条学生记录时,

学习笔记之MySQL触发器详解

创建触发器 创建只有一个执行语句的触发器 CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 执行语句其中,触发器名参数指要创建的触发器的名字 1.创建MySQL触发器: 语法:  代码如下 复制代码 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name  FOR EACH ROW  BEGIN  trigger_stmt  END:  CREATE TR

MySQL触发器的用途和用法详解介绍

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力.触发器的作用: 1. 安全性.可以基于数据库的值使用户具有操作数据库的某种权利: 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据: 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%. 2. 审计.可以跟踪用户对数据库的操作: 审计用户操作数据库的语句: 把用户对数据库的更新写入审计表. 3. 实现复杂的数据完整性规则:

mysql 触发器的 like 语句

问题描述 mysql 触发器的 like 语句 语句执行之后触发器没有执行 like语句该怎么写?????????? 解决方案 like concat(old.c_id,'%');