In Postgres kunt u veel doen met transacties die zijn teruggedraaid aan het einde:
BEGIN;
UPDATE foo ...:
INSERT bar ...;
SELECT baz FROM ...;
CREATE TABLE abc...; -- even works for DDL statements
DROP TABLE def...;
ALTER TABLE ghi ...:
ROLLBACK; -- !
Meer in de handleiding:BEGIN
ROLLBACK
Houd er echter rekening mee dat sommige dingen niet kunnen worden teruggedraaid. Sequenties worden bijvoorbeeld niet teruggedraaid. Of enkele speciale commando's zoals dblink oproepen.
En sommige opdrachten kunnen niet worden uitgevoerd in een transactie met andere. Zoals CREATE DATABASE
of VACUUM
.
Er kunnen ook bijwerkingen zijn bij gelijktijdige belasting, zoals impasses. Onwaarschijnlijk echter. U kunt het transactie-isolatieniveau instellen aan uw vereisten om eventuele bijwerkingen uit te sluiten (tegen enige kosten voor de prestaties).
Ik zou dit niet doen met verstandige gegevens. Het risico om per ongeluk te begaan is te groot. En gebruikers willekeurige code laten uitvoeren is een risico dat nauwelijks te beheersen is. Maar voor een trainingsomgeving zou dat goed genoeg moeten zijn.
Maak er een back-up van met een sjabloondatabase . Mocht er iets mis gaan, dan is dat de snelste manier om een basisstatus te herstellen. Voorbeeld (kijk naar het laatste hoofdstuk):
Alle tabellen in een Postgres-database afkappen
Dit kan ook worden gebruikt als brute kracht alternatief :om een onberispelijke nieuwe database voor elke stagiair te bieden.