mysql触发器详解(php 怎么实现mysql触发器效果)

本文目录
php 怎么实现mysql触发器效果
1231231231231231312
触发器
1. 什么是触发器
触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。
触发器从本质上来说,是一个存储过程,但是它与普通的存储过程不一样的地方在于,普通的存储过程是通过CALL方法进行调用的,而触发器不是用CALL调用,触发器是在我们提前设定好的事件出现以后,自动被调用的。
2.为什么要用触发器
我们在MySQL 5.0中包含对触发器的支持是由于以下原因:
(1)MySQL早期版本的用户长期有需要触发器的要求。
(2)我们曾经许诺支持所有ANSI标准的特性。
(3)您可以使用它来检查或预防坏的数据进入数据库。
(4)您可以改变或者取消INSERT, UPDATE以及DELETE语句。
(5)您可以在一个会话中监视数据改变的动作。在这里我假定大家都读过"MySQL新特性"丛书的第一集--"MySQL存储过程",那么大家都应该知道MySQL至此存储过程和函数,那是很重要的知识,因为在触发器中你可以使用在函数中使用的语句。特别举个例子:
①复合语句(BEGIN / END)是合法的.
②流控制(Flow-of-control)语句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,ITERATE)也是合法的.
③变量声明(DECLARE)以及指派(SET)是合法的.
④允许条件声明.
⑤异常处理声明也是允许的.
⑥但是在这里要记住函数有受限条件:不能在函数中访问表.
因此在函数中使用以下语句是非法的。
ALTER ’CACHE INDEX’ CALL COMMIT CREATE DELETE
DROP ’FLUSH PRIVILEGES’ GRANT INSERT KILL
LOCK OPTIMIZE REPAIR REPLACE REVOKE
ROLLBACK SAVEPOINT ’SELECT FROM table’
’SET system variable’ ’SET TRANSACTION’
SHOW ’START TRANSACTION’ TRUNCATE UPDATE
在触发器中也有完全一样的限制.触发器相对而言比较新,因此会有(bugs)缺陷.所以我在这里给大家警告,就像我在存储过程书中所说那样.不要在
含有重要数据的数据库中使用这个触发器,如果需要的话在一些以测试为目的的数据库上使用,同时在你对表创建触发器时确认这些数据库是默认的。
2.1 触发器的主要用途
触发器主要用于在多个有相互关系的表之间,做一些相互关联的操作。
2.2 临时表
更新:更新是用一条新的数据 替换一条旧的数据。在系统中,更新操作分为以下2个步骤:
(1)首先,把旧的数据删掉
(2)把新的数据插入表中。
在进行以上两个步骤之前,系统又进行了3个步骤:
(1) 系统创建两张临时表,临时表与要操作的表的结构完全相同,仅是结构相同,但是临时表中并无数据。
(2) 系统向其中一张临时表插入要更新的数据,
(3) 系统把要删除的,即要被更新的数据,插入另外一张临时表当中。
2.2.1 临时表的叫法:
NEW:用来插入新数据的临时表
OLD:数据要被替换的临时表
2.2.2 临时表的使用
NEW 列名获取插入值
2.2.3 使用不同的语句与使用临时表的关系
使用UPDATA语句:可以使用NEW和OLD两张临时表
使用INSERT语句:只能使用NEW临时表
使用DELETE语句:只能使用OLD临时表
mysql触发器如何在某个字段发生改变时触发
你说的对某表的操作:包括INSERT,UPDATE,DELETE,发生变化时触发,就是UPDATE操作
大致写一下IF
NEW.id!=OLD.id
then
insert
.....
end
if
怎样使用Mysql新建触发器
使用Mysql新建触发器的方法:
1、首先,需要确定自己的Mysql数据库的版本,因为my sql数据库是从5.0.2版本才开始支持触发器的。
2、在电脑的dos命令界面中输入 mysql --version,来获取mysql的版本号,注意version的两个横线和之前的mysql是有一个空格的。
3、上一步获取了mysql版本号,就开始建立触发器。采用以视图加代码的方式创建,在数据表中找到要执行删除操作的表,然后右键设计表
4、这样就打开了表的设计页面,可以看到有一个触发器选项卡,点击“触发器”
5、可以看到对应的选项,在名里面添加需要新建的触发器的名字,在触发选项中选择before或者after,然后在插入、更新、删除三个选项中勾选一个。
6、这样们就建立了一个名为“datri”的触发器,在删除操作执行之后触发
7、然后在下面的定义下面的框中输入需要执行的操作。然后点击sql预览,可以看到整个触发器的代码
8、最后就是保存了,由于做的是触发器,保存之后,在执行删除操作时,这个触发器才相当于被执行。
关于mysql中触发器old和new如何更好的区别我有话要说
Mysql的触发器相当于内部处理的一些过程,不带入和带出任何的参数。
其内部使用的参数就是新旧两条记录old和new的字段。
用于完成数据表之间的触发操作,来保证数据库的一致性、完整性。
Mysql的存储过程是类似于其它编程语言中的函数的功能。
存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数。

更多文章:
false是精确匹配吗(vlookup 函数中的精确匹配和大致匹配的区别)
2026年10月12日 00:50
sumproduct多条件排名不重复(Excel 求助,如何多条件统计不重复个数)
2026年10月11日 23:10
gcc编译器参数(深度linux的arm-linux-gnueabihf-gcc编译参数如何配)
2026年10月11日 19:30
asp是什么检查项目(医院血液检验项目RPR、TPPA、HIV-Ab各是什么意思)
2026年10月11日 10:20
汇编输出指令(用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720“)
2026年10月11日 07:20
本地搭建springboot项目(使用eclipse构建springboot项目)
2026年10月11日 06:20





