MySql触发器以及实例
来源:互联网 发布:国际淘宝网官方网站 编辑:程序博客网 时间:2024/05/19 02:19
MySql触发器以及实例
(2010-05-06 08:20:57)杂谈
分类: javaCREATE TRIGGER语法
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
触发程序与命名为tbl_name的表相关。
trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。
trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。
trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:
·
·
·
trigger_stmt是当触发程序激活时执行的语句。如果你打算执行多个语句,可使用BEGIN ... END复合语句结构。
MySQL数据库创建触发器的格式如下:
create trigger <触发器名称>{ before | after}{insert | update | delete}on <表名>for each row<触发器SQL语句>
create trigger <触发器名称>:创建一个新触发器,并指定触发器的名称。
{ before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。
on <表名>:用于指定响应该触发器的表名。
for each row:触发器的执行间隔,for each row 通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。
实例:
(1): 在“命令提示符”下创建数据表test1
CREATE TABLE `test1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL
)
(2): 再创建数据表test2
CREATE TABLE `test2` (
`num` int(11) DEFAULT NULL,
)
(3):创建触发器
create trigger `num` BEFORE INSERT on `test1`
for each row update test2 set num = num + 1;
向test1表插入数据,test2表中的num就加一
(4): INSERT INTO test1 (name) VALUES ('aa');
(5):查看test1和test2表中的数据
DROP TRIGGER语法
DROP TRIGGER [schema_name.]trigger_name
舍弃触发程序。方案名称(schema_name)是可选的。如果省略了schema(方案),将从当前方案中舍弃触发程序。
DROP TRIGGER test.num
注意:
使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一行的列,也能使用NEW.col_name来引用更新后的行中的列。
用OLD命名的列是只读的。你可以引用它,但不能更改它。对于用NEW命名的列,如果具有SELECT权限,可引用它。在BEFORE触发程序中,如果你具有UPDATE权限,可使用“SET NEW.col_name =value”更改它的值。这意味着,你可以使用触发程序来更改将要插入到新行中的值,或用于更新行的值。
在BEFORE触发程序中,AUTO_INCREMENT列的NEW值为0,不是实际插入新记录时将自动生成的序列号。
更多查看手册!
- MySql触发器以及实例
- MySql触发器以及实例
- MySQL触发器实例(记录触发器)
- Mysql触发器实例
- Mysql 触发器实例
- mysql触发器实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- mysql触发器成功实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- mysql 触发器实例
- MySql触发器实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- MySQL 触发器简单实例
- 北邮OJ 981. 16校赛-Saber's Number Game
- "==" 与 equals()的 区别
- Android 五大布局讲解与应用
- 如何快速区分MindMapper中的超链接和附件
- J2SE(十一)Java之内部类
- MySql触发器以及实例
- app引导页(背景图片切换加各个页面动画效果)
- 当 Activity 以全屏模式运行时,如何允许 Android 系统状态栏在顶层出现,而不迫使 Activity 重新布局让出空间?
- ios 之控制器的loadview
- Git 分支操作
- win64 位系统运行32位Oracle客户端
- 细说Cookie
- 页面传值对象 到controllerjs写法
- iOS录音后的.caf格式转MP3格式