| 您的当前位置:首页 --> MYSQL教程 |
| MySQL触发器使用详解 |
| 浏览次数:833 关键词 ( ) |
|
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 复制代码 代码如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; 由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。 trigger_event 详解 LOAD DATA 语句用于将一个文件装入到一个数据表中,相当与一系列的 INSERT 操作。 REPLACE 语句一般来说和 INSERT 语句很像,只是在表中有 primary key 或 unique 索引时,如果插入的数据和原来 primary key 或 unique 索引一致时,会先删除原来的数据,然后增加一条新数据,也就是说,一条 REPLACE 语句有时候等价于一条。 INSERT 语句,有时候等价于一条 DELETE 语句加上一条 INSERT 语句。 INSERT 型触发器:插入某一行时激活触发器,可能通过 INSERT、LOAD DATA、REPLACE 语句触发; BEGIN … END 详解 BEGIN 这时就会用到 DELIMITER 命令(DELIMITER 是定界符,分隔符的意思),它是一条命令,不需要语句结束标识,语法为: 一个完整的创建触发器示例 复制代码 代码如下: DELIMITER $ create trigger tri_stuInsert after insert on student for each row begin declare c int; set c = (select stuCount from class where classID=new.classID); update class set stuCount = c + 1 where classID = new.classID; end$ DELIMITER ; 变量详解 即其它语句之前,语法如下: DECLARE var_name[,...] type [DEFAULT value] 对变量赋值采用 SET 语句,语法为: SET var_name = expr [,var_name = expr] ... NEW 与 OLD 详解 上述示例中使用了NEW关键字,和 MS SQL Server 中的 INSERTED 和 DELETED 类似,MySQL 中定义了 NEW 和 OLD,用来表示 触发器的所在表中,触发了触发器的那一行数据。 查看触发器 和查看数据库(show databases;)查看表格(show tables;)一样,查看触发器的语法如下: SHOW TRIGGERS [FROM schema_name]; 不必先“USE database_name;”了。 删除触发器 和删除数据库、删除表格一样,删除触发器的语法如下: DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name 触发器的执行顺序 我们建立的数据库一般都是 InnoDB 数据库,其上建立的表是事务性表,也就是事务安全的。这时,若SQL语句或触发器执行失败,MySQL 会回滚事务,有: ①如果 BEFORE 触发器执行失败,SQL 无法正确执行。 小伙伴们是否对mysql的触发器的使用有所了解了呢,如有疑问,就给我留言吧,大家共同进步。 |
| 下载次数:30 |
| 下载地址:点击下载 |
| 本资源为程序自动采集,如有侵权请联系我们移除 admin#80vps.com 来信请将#替换为@ |
| 下一条 SQL计算timestamp的差值的方法 上一条 mysql索引失效的五种情况分析 |