Mysql返回子句等价

时间:2012-03-06 12:04:15

标签: mysql

我是MySql的新手,所以请保持温和。

Oracle中的RETURNING子句或MySQL中的SQL Server中的Inserted'/'Deleted表是否等效?我想做的是以下几点:

  • 从表A中删除一组行
  • 将已删除的行集插入表B中。

    请帮忙!

由于

2 个答案:

答案 0 :(得分:4)

很遗憾,您无法在一个查询中同时执行插入和删除操作,但如果您使用的是事务存储引擎,则可以在一个事务中完成所有操作(喜欢InnoDB)。此外,Oracle和PostgreSQL支持RETURNING,但MySQL不支持delete,因此您需要编写单独的insertbegin transaction; insert into tableB select * from tableA where 'your_condition_here'; delete from tableA where 'your_condition_here'; commit; 语句。

但是,使用事务将保证只从tableA中删除成功复制的数据。请考虑以下事项:

{{1}}

答案 1 :(得分:0)

为什么不在表B中插入要从表A中删除的行,然后从表A中删除行?你可以这样做:

insert into tableB select * from tableA where condition;

然后

delete from tableA where condition.