Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75438
  • 博文数量: 15
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-10 11:42
文章分类

全部博文(15)

文章存档

2013年(2)

2012年(7)

2011年(1)

2010年(1)

2009年(4)

我的朋友

分类: Mysql/postgreSQL

2012-08-22 14:29:22

测试案例:
  1. CREATE TABLE `test` (
  2.   `id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `msg` char(10) DEFAULT NULL,
  4.   `zy` varchar(40) DEFAULT '',
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

  7. CREATE TABLE `test2` (
  8.   `id` int(11) DEFAULT NULL
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1

  10. DELIMITER ;;
  11. CREATE TRIGGER `yuyuyu_test_insert_before` before insert ON `test` FOR EACH ROW BEGIN
  12.   set NEW.zy='insertbefore';
  13. END;;
  14. DELIMITER ;

  15. DELIMITER ;;
  16. CREATE TRIGGER `yuyuyu_test_update_before` before UPDATE ON `test` FOR EACH ROW BEGIN
  17.   set NEW.zy='updatebefore';
  18. END;;
  19. DELIMITER ;

  20. drop TRIGGER `yuyuyu_test_delete_before`
  21. DELIMITER ;;
  22. CREATE TRIGGER `yuyuyu_test_delete_before` before delete ON `test` FOR EACH ROW BEGIN
  23.  insert into test2(id) values (111);
  24. END;;
  25. DELIMITER ;

  26. select * from test2;
  27. id
  28. null

  29. replace into `test` (id,msg,zy) values(3,'ccc','ccc');
  30. 3 ccc insertbefore

  31. replace into `test` (id,msg,zy) values(3,'ddd','ccc');
  32. 3 ddd insertbefore

  33. select * from test;
  34. 1    aaaaa    before
  35. 2    bbb    updatebefore
  36. 3    ddd    insertbefore

  37. select * from test2;
  38. id
  39. 111

结论:
replace into 只对 insert和delete触发器有影响,
影响顺序:
依次触发before insert, before delete, after delete,after insert
 
证明:replace into 是先删后增(先试图增,发现冲突,然后删除,最后增。)

阅读(2363) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~