WEB开发网
开发学院数据库MySQL MySQL 5.0-触发器(参考) 阅读

MySQL 5.0-触发器(参考)

 2007-02-13 10:52:08 来源:WEB开发网   
核心提示: CREATE TRIGGER t21_auBEFORE UPDATE ON t22FOR EACH ROWBEGINSET @old = OLD . s1;SET @new = NEW.s1;END;//现在如果t21表中的s1列的值是55,那么执行了"UPDATE t21 SE
CREATE TRIGGER t21_au
BEFORE UPDATE ON t22
FOR EACH ROW
BEGIN
SET @old = OLD . s1;
SET @new = NEW.s1;
END;//

现在如果t21表中的s1列的值是55,那么执行了"UPDATE t21 SET s1 = s1 + 1"之后@old的值会变成55,而@new的值将会变成56。

Example of CREATE and INSERT CREATE和INSERT的例子

CREATE table with trigger创建有触发器的表

这里所有的例程中我都假定大家的分隔符已经设置成//(DELIMITER //)。

CREATE TABLE t22 (s1 INTEGER)//
  CREATE TRIGGER t22_bi
BEFORE INSERT ON t22
FOR EACH ROW
BEGIN
SET @x = 'Trigger was activated!';
SET NEW.s1 = 55;
END;//

在最开始我创建了一个名字为t22的表,然后在表t22上创建了一个触发器t22_bi,当我们要向表中的行插入时,触发器就会被激活,执行将s1列的值改为55的动作。

INSERT on table w ith a trigger使用触发器执行插入动作

mysql> INSERT INTO t22 VALUES (1)//

让我们看如果向表t2中插入一行数据触发器对应的表会怎么样?

这里的插入的动作是很常见的,我们不需要触发器的权限来执行它。甚至不需要知道是否有触发器关联。

mysql> SELECT @x, t22.* FROM t22//
+------------------------+------+
| @x | s1 |
+------------------------+------+
| Trigger was activated! | 55 |
+------------------------+------+
1 row in set (0.00 sec)

大家可以看到INSERT动作之后的结果,和我们预期的一样,x标记被改动了,同时这里插入的数据不是我们开始输入的插入数据,而是触发器自己的数据。

上一页  1 2 3 4 5 6 7  下一页

Tags:MySQL 触发器 参考

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接