在mysql中我可以在删除后返回已删除的行吗?

时间:2015-10-14 02:20:36

标签: mysql sql

如何在mysql中返回以下查询的已删除记录?

DELETE t1
FROM t1
LEFT JOIN t2 on (t1.t2_id = t2.id)
WHERE t2.id IS NULL OR t2.is_valid = false

背景:

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.23, for osx10.8 (x86_64) using  EditLine wrapper

2 个答案:

答案 0 :(得分:1)

MySQL没有等同于其他数据库提供的outputreturning子句。你最好的选择是临时表:

CREATE TABLE TheDeletedIds as
    SELECT t1.id
    FROM t1 LEFT JOIN
         t2 
         ON t1.t2_id = t2.id
    WHERE t2.id IS NULL OR t2.is_valid = false;

DELETE t1
    FROM t1
    WHERE t1.id IN (SELECT id FROM TheDeletedIds);

然后您刚创建的表格中包含您想要的ID。

注意:使用新创建的表进行删除非常重要。否则,另一个线程/进程可能会在您捕获ID和删除它们之间更改数据。

答案 1 :(得分:0)

google.maps.event.trigger(map, "resize");