设为首页 加入收藏

TOP

MySQL入门(三)(三)
2015-11-21 01:54:17 来源: 作者: 【 】 浏览:2
Tags:MySQL 入门
W.order_num INTO @o_num; mysql> INSERT INTO orders(order_date, cust_id) -> VALUES(Now(), 10001); mysql> SELECT @o_num;

+―――-+
| @o_num |
+―――-+
| 20010 |
+―――-+

(2) DELETE触发器

在 DELETE 触发器代码内,你可以引用一个名为 OLD 的虚拟表,访问被删除的行;
OLD 中的值全部都是只读的,不能更新;

mysql> DELIMITER //
mysql> CREATE TRIGGER deletemytable BEFORE DELETE ON mytable
    -> FOR EACH ROW
    -> BEGIN
    -> SELECT OLD.name INTO @n;
    -> INSERT INTO mytable_new(name, myphone) VALUES(OLD.name, OLD.phone);
    -> END//

mysql> DELETE FROM mytable WHERE name = 'Joy';
mysql> SELECT * FROM mytable_new;

mysql> SELECT @n;

+――+
| @n |
+――+
| Joy |
+――+
在触发器中使用 BEGIN END 块的好处是触发器能容纳多条SQL语句。

(3) UPDATE触发器

在 UPDATE 触发器代码中,你可以引用一个名为 OLD 的虚拟表访问以前(UPDATE语句执行前)的值,引用一个名为 NEW 的虚拟表访问新更新的值;
在 BERFORE UPDATE 触发器中,NEW 中的值可能也被更新(允许更改将要用于UPDATE语句中的值);
OLD中的值全都是只读的,不能更新。

mysql> CREATE TRIGGER updatemytable BEFORE UPDATE ON mytable
    -> FOR EACH ROW SET NEW.name = Upper(NEW.name);

mysql> UPDATE mytable SET name = 'John'  WHERE myid = 1004;
mysql> SELECT name FROM mytable WHERE myid = 1004;

+――+
| name |
+――+
| JOHN |
+――+
早期版本(具体哪个版本开始可以不知)不允许在触发器代码中使用 CALL 调用存储过程,在 MySQL 5.6 中是可以的。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql检测重复索引 下一篇MySQL入门(二)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: