mysql 触发器语法与应用示例_Mysql

来源:脚本之家  责任编辑:小易  

语法错误。MySQL 里面。IF 条件 THENEND IF的。例如:mysql>DELIMITER/mysql>CREATE PROCEDURE TestIfElsep_val INTBEGINIF(p_val=1)THENSELECT '1' AS A;ELSEIF(p_val=2)THENSELECT '2' AS A;ELSESELECT 'other' AS A;END IF;END/Query OK,0 rows affected(0.05 sec)mysql>call TestIfElse(1);A|1|1 row in set(0.00 sec)Query OK,0 rows affected(0.00 sec)mysql>call TestIfElse(2);A|2|1 row in set(0.00 sec)Query OK,0 rows affected(0.00 sec)mysql>call TestIfElse(3);A|other|1 row in set(0.00 sec)Query OK,0 rows affected(0.00 sec)mysql>你那里少了一个 THENwww.zgxue.com防采集请勿采集本网。

本文实例讲述了mysql 触发器语法与应用。分享给大家供大家参考,具体如下:

你是想在插入新的数据的时候,把之前所有数据都判断一下吗?这个恐怕是不行。因为要判断的数据量太大了。要是就是一条还行。如果只是之前的一条,那就before insert select count(*)into i_count

例子:创建触发器,记录表的增、删、改操作记录

mysql用触发器禁止某条记录的删除、修改: delimiter/ CREATE TRIGGER xx_company_agent_update BEFORE UPDATE ON xx_company_agent FOR EACH ROW BEGIN IF OLD.bank_card is not null THEN SET

//创建user表;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `account` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `address` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; //创建对user表操作历史表DROP TABLE IF EXISTS `user_history`;CREATE TABLE `user_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL, `operatetype` varchar(200) NOT NULL, `operatetime` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT:将新行插入表时激活触发器,例如,通过 INSERT、LOADDATA 和 REPLACE 语句;UPDATE:更改某一行时激活触发器,例如,通过UPDATE语句;DELETE:从表中删除某一行时激活触发器,例如,通过 DELETE

DELIMITER:改变输入的结束符,默认情况下输入结束符是分号;,这里把它改成了两个分号;;,这样做的目的是把多条含分号的语句做个封装,全部输入完之后一起执行,而不是一遇到默认的分号结束符就自动执行; new:当触发插入和更新事件时可用,指向的是被操作的记录 old: 当触发删除和更新事件时可用,指向的是被操作的记录

触发器,存储过程,函数在MySQL里边是如何处理的呢?触发器,存储过程,函数 在创建的时候都会记录Binlog 触发器在执行的时候 Master、Slave 都会被调用,Master上的触发器将会在Master上被调用,Slave上

INSERT:

由于各种原因,mysql主从架构经常会出现数据不一致的情况出现,大致归结为如下几类 1:备库写数据 2:执行non-deterministic query 3:回滚掺杂事务表和非事务表的事务 4:binlog或者relay log数据

DROP TRIGGER IF EXISTS `tri_insert_user`;DELIMITER ;;CREATE TRIGGER `tri_insert_user` AFTER INSERT ON `user` FOR EACH ROW begin INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (new.id, 'add a user', now());end;;DELIMITER ;

UPDATE:

DROP TRIGGER IF EXISTS `tri_update_user`;DELIMITER ;;CREATE TRIGGER `tri_update_user` AFTER UPDATE ON `user` FOR EACH ROW begin INSERT INTO user_history(user_id,operatetype, operatetime) VALUES (new.id, 'update a user', now());end;;DELIMITER ;

DELETE:

DROP TRIGGER IF EXISTS `tri_delete_user`;DELIMITER ;;CREATE TRIGGER `tri_delete_user` AFTER DELETE ON `user` FOR EACH ROW begin INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (old.id, 'delete a user', now());end;;DELIMITER ;

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总

希望本文所述对大家MySQL数据库计有所帮助。

1、触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。2、触发器的触发条件其实在定义的时候就已经设定好了。3、触发器可以分为语句级触发器和行级触发器。简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。4、具体举例:1)、在一个表中定义语句级的触发器,当这个表被删除636f7079e799bee5baa6e997aee7ad9431333431373839时,程序就会自动执行触发器里面定义的操作过程。这个【删除表的操作】就是触发器执行的条件。2)、在一个表中定义行级的触发器,那当【这个表中一行数据发生变化】的时候,比如删除了一行记录,那触发器也会被自动执行了。5、创建触发器语句6、触发器作用(应用场景)(1)数据确认(2)实施复杂的安全性检查(3)做日志记录,跟踪表上所做的数据操作等(4)数据的备份和同步;扩展资料一、触发器介绍1、数据库触发器是一个与表相关联的、存储的 PL/SQL 程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle 自动地执行触发器中定义的语句序列。2、触发器的作用触发器可用于:(1)数据确认(2)实施复杂的安全性检查(3)做审计,跟踪表上所做的数据操作等(4)数据的备份和同步3、触发器的类型(1)语句级触发器在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。(2)行级触发器(FOR EACH ROW)触发语句作用的每一条记录都被触发。在行级触发器中使用 old 和 new 伪记录变量,识别值的状态。4、创建触发器的语法CREATE[or REPLACE]TRIGGER 触发器名{BEFORE|AFTER}{DELETE|INSERT|UPDATE[OF 列名]}ON 表名[FOR EACH ROW[WHEN(条件)]]参考资料百度百科-Oracle触发器内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mysql触发器使用详解
  • mysql触发器概念、原理与用法详解
  • mysql中的触发器简单介绍及使用案例
  • 如何测试mysql触发器和存储过程
  • mysql如何创建触发器
  • mysql 5.0触发器参考教程
  • mysql与sql的触发器的不同写法
  • mysql中触发器的基础学习教程
  • mysql中触发器入门简单实例与介绍
  • mysql 触发器用法实例详解
  • mysql触发器简单用法示例
  • mysql 实现双向复制的方法指南
  • mysql如何清空慢查询文件
  • 深入mysql存储引擎比较的详解
  • 使用cgroups来限制mysql企业备份服务对资源的占用
  • mysql 句柄数占用过多的解决方法
  • mysql on duplicate key update语句示例
  • mysql 8.0.19 win10快速安装教程
  • 阿里云linux centos 7.2下自建mysql的root密码忘记的解决方法
  • mysql binlog二进制日志详解
  • 解析:内联,左外联,右外联,全连接,交叉连接的区别
  • 触发器的应用和用法?
  • mysql数据库触发器,怎么做满足条件触发
  • mysql触发器中UPDATE的应用
  • 有没有大佬解决一下我这个疑惑,mySQL触发器
  • mysql触发器的COUNT
  • mysql如何用触发器禁止某条记录的删除、修改
  • mysql中的存储过程、触发器、视图的用法
  • mysql 触发器 binlog salve 能修改吗
  • mysql主从库都有触发器,主库添加一条数据,从库出现两条数据
  • mysql 触发器如何优化速度
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysqlmysql查询技巧大全mysql事务操作技巧汇总mysql存储过程技巧大全mysql数据库锁相关技巧汇总mysql常用函数大汇总mysql触发器使用详解mysql触发器概念、原理与用法详解mysql中的触发器简单介绍及使用案例如何测试mysql触发器和存储过程mysql如何创建触发器mysql 5.0触发器参考教程mysql与sql的触发器的不同写法mysql中触发器的基础学习教程mysql中触发器入门简单实例与介绍mysql 触发器用法实例详解mysql触发器简单用法示例mysql 实现双向复制的方法指南mysql如何清空慢查询文件深入mysql存储引擎比较的详解使用cgroups来限制mysql企业备份服务对资源的占用mysql 句柄数占用过多的解决方法mysql on duplicate key update语句示例mysql 8.0.19 win10快速安装教程阿里云linux centos 7.2下自建mysql的root密码忘记的解决方法mysql binlog二进制日志详解解析:内联,左外联,右外联,全连接,交叉连接的区别mysql安装图解 mysql图文安装教程can""""t connect to mysql servwindows下mysql5.6版本安装及配置mysql字符串截取函数substring的mysql创建用户与授权方法mysql提示:the server quit withmysql——修改root密码的4种方法mysql日期数据类型、时间类型使用mysql update语句的用法详解mysql 的case when 语句使用说明mysql不停地自动重启的解决方法mysql 百万级分页优化(mysql千万级快速分mysql数据库忘记管理员密码的解决方法mysql5.7.11绿色版安装教程图文详解服务器数据库编码格式问题解决方案浅析mysql交互式连接&非交互式连接linux下如何实现mysql定时任务mysql数据库索引损坏及修复经验分享error 1406 : data too long for column mysql如何实现多行查询结果合并成一行
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved