Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

No MySQL, posso retornar linhas excluídas após uma exclusão?


MySQL não tem o equivalente da output ou returning cláusulas fornecidas por outros bancos de dados. Sua melhor aposta é uma mesa temporária:
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);

Então a tabela que você acabou de criar tem os ids que você quer.

Observação:é importante usar a tabela recém-criada para a exclusão. Caso contrário, outro encadeamento/processo pode alterar os dados entre o momento em que você captura os ids e o momento em que os exclui.