首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL 触发器的有关问题:怎么得到delete操作的结果集

2012-02-12 
MySQL 触发器的问题:如何得到delete操作的结果集?MS SQL Server 里面,有一个Deleted临时表,MySQL 该如何去

MySQL 触发器的问题:如何得到delete操作的结果集?
MS SQL Server 里面,有一个Deleted临时表,MySQL 该如何去操作?

MS SQL Server:
CREATE TRIGGER `dbname`.`triggername` AFTER DELETE
  ON dbname.table1 FOR EACH ROW
BEGIN
  delete from table2 where id in
(select idfrom Deleted);
END;

其他insert,update操作后的临时表又存在不?该如何操作?

刚接触MySQL时间不长,请大虾们多多指教。

[解决办法]
MYSQL 中的临时表叫做OLD


delete from table2 where id in
(select id from OLD);
[解决办法]
CREATE TRIGGER `dbname`.`triggername` AFTER DELETE 
ON dbname.table1 FOR EACH ROW 
BEGIN 
 delete from table2 where id in 
(select id from OLD);
END; 

[解决办法]

SQL code
DELIMITER $$DROP TRIGGER /*!50114 IF EXISTS */ `test`.`tr_delete`$$CREATE TRIGGER `test`.`tr_delete` AFTER DELETE on `test`.`t11_replicas`FOR EACH ROW BEGIN  delete from t11 where id = old.id;END$$DELIMITER ;select * from t11_replicas where id =2;query result(1 records)id str 2 This is a test 2 select * from t11 where id =2;query result(1 records)id str 2 23434343 delete from t11_replicas where id =2;(1 row(s)affected)(0 ms taken)select * from t11 where id =2;Empty set (0.00 sec)
[解决办法]
不能够直接(select id from OLD)的,只能通过 (old|new).列名 的方式使用。
[解决办法]
OLD 表示操作前的表
NEW 表示操作后的表
 
OLD.status 就是 表 更新或插入删除前对应记录的status字段值
NEW.status 就是 表 更新或插入删除后对应记录的status字段值
[解决办法]
还有一点,对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及OLD同时使用。

热点排行