PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć dane z wielu tabel?

Jeśli masz kontrolę nad swoim schematem, użyję kaskadowania schematu usuwa .

Z artykułu (bardziej trafna część przetłumaczona na przykład)

CREATE TABLE point
(
    pt_id integer PRIMARY KEY,
    evt_id integer REFERENCES event ON DELETE CASCADE
)

Jeśli masz skonfigurowane kaskady, możesz po prostu usunąć z głównej tabeli wydarzeń, a wszystkie inne tabele zostaną automatycznie wyczyszczone

W przeciwnym razie musisz najpierw usunąć wszystkie odniesienia, a następnie usunąć główną tabelę. Powinieneś to zrobić w jednej transakcji, aby zachować spójność danych

BEGIN;
DELETE FROM trace WHERE EXISTS 
    (SELECT 1 FROM point WHERE evt_id = 1139 AND trace.pt_id = point.pt_id);
DELETE FROM point where evt_id = 1139;
DELETE FROM magnitude where evt_id = 1139;
DELETE FROM event where evt_id = 1139;
COMMIT;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku on Rails — nieprawidłowy DATABASE_URL

  2. PostgreSQL:VACUM FULL vs pg_dump i przywracanie

  3. Jak zbiorczo zaktualizować identyfikator sekwencji postgreSQL dla wszystkich tabel?

  4. Konwersja Django z SQLite do PostgreSQL

  5. Jak mogę utworzyć ograniczenie, aby sprawdzić, czy wiadomość e-mail jest ważna w postgresie?