sql >> Database >  >> RDS >> PostgreSQL

Kan ik sql-commando's droog uitvoeren/sandboxen?

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.



  1. Hoe voer je dagelijks automatisch een php-script uit?

  2. Hoe kunt u historische opzoekwaarden in een database het beste beheren?

  3. Kan ik de slaapstand-querytaal gebruiken voor entiteiten die niet aan een tabel zijn toegewezen?

  4. INSERT INTO met exec met meerdere resultatensets