MySQL返回子句等效

Sim*_*ser 6 mysql

我是MySql的新手,所以请保持谦虚。

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

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

    请帮忙!

谢谢

Kor*_*urk 8

不幸的是,您不能在一个查询中同时执行插入和删除操作,但如果您使用的是事务存储引擎(如 InnoDB),则可以在一个事务中完成所有操作。此外,RETURNINGOracle 和 PostgreSQL 支持但 MySQL 不支持,因此您需要编写单独的deleteandinsert语句。

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

begin transaction;
insert into tableB select * from tableA where 'your_condition_here';
delete from tableA where 'your_condition_here';
commit;
Run Code Online (Sandbox Code Playgroud)

  • 注意 MariaDB 10.5 及更高版本支持“插入...返回”;但据我所知,Oracle MySQL 不是。https://mariadb.com/kb/en/insertreturning/ (5认同)