sql >> Databáze >  >> RDS >> PostgreSQL

Jak odstranit data z více tabulek?

Pokud máte nad svým schématem kontrolu, nechal bych schéma používat kaskádové smaže .

Z článku (vhodnější část přeložená pro váš příklad)

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

Pokud máte nastavené kaskády, stačí je smazat z tabulky hlavní události a všechny ostatní stoly budou automaticky vyčištěny

V opačném případě musíte nejprve odstranit všechny odkazy a poté odstranit hlavní tabulku. Měli byste to udělat v jedné transakci, aby byla data konzistentní

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. Problém s vkládáním dat z csv do databáze mysql s neznámým počtem sloupců

  2. Která nastavení poskytují výchozí formát data a času serveru SQL Server?

  3. Po instalaci na Mac resetujte kořenové heslo MySQL pomocí příkazu ALTER USER

  4. Jak nainstalovat PostgreSQL 9.1 na OSX Lion