Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy w MySQL mogę zwrócić usunięte wiersze po usunięciu?

MySQL nie ma odpowiednika output lub returning klauzule dostarczane przez inne bazy danych. Najlepszym wyborem jest stół tymczasowy:

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);

Wtedy właśnie utworzona tabela ma odpowiednie identyfikatory.

Uwaga:ważne jest, aby do usunięcia użyć nowo utworzonej tabeli. W przeciwnym razie inny wątek/proces może zmienić dane między momentem przechwycenia identyfikatorów a ich usunięciem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj i skonfiguruj MySQL Workbench na Ubuntu 16.04

  2. MySQL Obejście błędu 1093

  3. ActiveRecord::ConnectionTimeoutError:nie można uzyskać połączenia z bazą danych w ciągu 5000 sekund (czekano 5000 sekund)

  4. Dynamiczna instrukcja SQL SELECT z PHP w oparciu o opcje użytkownika

  5. Zaktualizuj zapytanie za pomocą PDO i MySQL