Si tiene control sobre su esquema, yo haría que el esquema use cascading deletes.
Desde el artículo (la parte más pertinente traducido por tu ejemplo)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
Si tiene cascadas establecidos, a continuación, puedes eliminar de la tabla de eventos principal y todas las otras mesas se limpiará automáticamente
De lo contrario, primero debe eliminar todas las referencias y luego eliminar la tabla principal. Usted debe hacer esto en una sola transacción para mantener los datos consistentes
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;
Hasta donde yo sé, no se puede eliminar de varias tablas como esa (pero podría estar equivocado). Sin embargo, al menos 'trace' no tiene una columna evt_id –
La base de datos está en el servidor. ¿Cómo ejecuto este archivo de consulta? – user1202766
Sí, ese rastro verdadero no tiene una columna evt_id pero tiene pt_id que es de la tabla de puntos que tiene la columna evt_id ... ¡eso es confuso! – user1202766