PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изтрия данни от множество таблици?

Ако имате контрол върху вашата схема, бих направил схемата да използва каскадно изтрива .

От статията (по-подходящата част е преведена за вашия пример)

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

Ако сте настроили каскади, тогава можете просто да изтриете от основната таблица на събитията и всички останали таблици ще бъдат изчистени автоматично

В противен случай първо трябва да изтриете всички препратки, след което да изтриете основната таблица. Трябва да направите това в една транзакция, за да поддържате данните последователни

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. Защо един идентификатор в CREATE TABLE е в двойни кавички, но не и другите?

  2. PostgreSQL MAX и GROUP BY

  3. Използване на pt-pg-summary Percona Toolkit за PostgreSQL

  4. Как да експортирате пълнотекстови файлове с SQL?

  5. Django/Python:Актуализирайте връзката, за да посочите настройките.AUTH_USER_MODEL