MySQL 触发器的问题:如何得到delete操作的结果集?

hslinux 2008-01-22 09:57:24
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时间不长,请大虾们多多指教。
...全文
616 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveme1204 2008-01-22
  • 打赏
  • 举报
回复
CREATE TRIGGER `dbname`.`triggername` AFTER DELETE
ON dbname.table1 FOR EACH ROW
BEGIN
delete from table2 where id in
(select id from OLD);
END;
懒得去死 2008-01-22
  • 打赏
  • 举报
回复
MYSQL 中的临时表叫做OLD


delete from table2 where id in
(select id from OLD);
XFliangwh 2008-01-22
  • 打赏
  • 举报
回复
还有一点,对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及OLD同时使用。
XFliangwh 2008-01-22
  • 打赏
  • 举报
回复
OLD 表示操作前的表
NEW 表示操作后的表

OLD.status 就是 表 更新或插入删除前对应记录的status字段值
NEW.status 就是 表 更新或插入删除后对应记录的status字段值
XFliangwh 2008-01-22
  • 打赏
  • 举报
回复
不能够直接(select id from OLD)的,只能通过 (old|new).列名 的方式使用。
懒得去死 2008-01-22
  • 打赏
  • 举报
回复

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)




hslinux 2008-01-22
  • 打赏
  • 举报
回复
Table 'dbname.old' doesn't exist

是不是还有什么开关打开临时表?

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧