数据库触发器

简介: ~~语法~~ CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。 { INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行inse
~~语法~~

CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。
{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。
FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。



顾名思义,new是新插入的数据,old是原来的数据

insert只会有new,代表着要插入的新记录

delete只会有old,代表着要删除的记录

update由于执行的是先删除旧的记录,再插入新的记录,因此new和old都会有,且含义与上面的相同


根据ID做一个hash路由算法分配服务器


触发器更新本表

Can’t update table ‘tbl’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger 错误,
如果你在触发器里面对刚刚插入的数据进行了insert/update, 则出现这个问题。因为会造成循环的调用.
应该使用set操作,而不是在触发器里使用update,比如

Drop trigger route ;//删除触发器

delimiter $(意思是告诉mysql语句的结尾换成以$结束)

delimiter $
create trigger route  
before insert on arcticle_link
for each row
BEGIN
      set NEW.server_id=(floor(rand()*100)+1);
END$


rand的范围0 <= rand() < 1.0

error---Updating of NEW row is not allowed in after trigger
对new赋值的时候只能在触发器before中只用,在after中是不能使用的,比如
在after的触发器中,new的赋值已经结束了,只能读取内容。 如果使用after不能使用new赋值,只能取值
new在before触发器中赋值,取值;在after触发器中取值

目录
相关文章
|
25天前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】10、MySQL 的触发器
【MySQL 数据库】10、MySQL 的触发器
18 0
|
8月前
|
存储 SQL 关系型数据库
MySQL存储过程与触发器:提升数据库操作效率与数据一致性
本文深入探讨了MySQL数据库中的存储过程与触发器,通过丰富的代码示例,详细介绍了存储过程的定义与调用、参数与变量的应用,以及触发器的创建、使用和实际案例。存储过程作为预定义的一组SQL语句,能够提高数据库操作的效率,实现数据逻辑和复杂计算。同时,触发器作为在特定事件触发时自动执行的SQL语句,能够保障数据一致性和逻辑完整性。通过代码实例,读者将了解如何创建、调用存储过程,如何利用参数和变量进行数据处理,以及如何创建触发器并应用于实际场景。这些技术将使读者能够在数据库管理中更高效地进行操作和保障数据的完整性,为应用程序提供可靠的数据支持。
172 0
|
4月前
|
存储 SQL 定位技术
数据库基础(五):存储过程与触发器的创建、执行、修改、删除
数据库基础(五):存储过程与触发器的创建、执行、修改、删除
|
9月前
|
存储 SQL 安全
数据库SQL Server 9-10 章(存储过程与触发器)
数据库SQL Server 9-10 章(存储过程与触发器)
150 0
|
9月前
|
存储 SQL 数据库
数据库视频第十章触发器
数据库视频第十章触发器
|
4月前
|
SQL 存储 关系型数据库
Mysql数据库 13.SQL语言 触发器
Mysql数据库 13.SQL语言 触发器
55 0
|
7月前
|
存储 SQL Oracle
数据库中存储过程和触发器有什么区别?
数据库中存储过程和触发器有什么区别?
104 0
|
8月前
|
存储 SQL 关系型数据库
数据库触发器
数据库触发器
111 0
|
9月前
|
存储 SQL 监控
MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项
MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项
136 0