sql >> Database >  >> RDS >> PostgreSQL

Hoe gegevens uit meerdere tabellen verwijderen?

Als je controle hebt over je schema, zou ik het schema cascadering laten gebruiken verwijdert .

Uit het artikel (het meer relevante gedeelte vertaald voor uw voorbeeld)

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

Als je cascades hebt ingesteld, kun je ze gewoon verwijderen uit de hoofdgebeurtenistabel en alle andere tafels worden automatisch opgeschoond

Anders moet u eerst alle verwijzingen verwijderen en daarna de hoofdtabel. U moet dit in één transactie doen om de gegevens consistent te houden

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. Hoe kan ik een mysql-query uitvoeren wanneer de gebruiker een nieuwe optie selecteert in een selectieveld?

  2. Hoe de primaire sleutel van een tabel opnieuw in te stellen?

  3. Zoek en verwijder dubbele rijen met twee kolommen

  4. Zou de volgende wijziging van de primaire sleutel werken met `pt-online-schema-change`?