mercoledì 3 dicembre 2014

Calendario dell'Avvento ITPUG: 3 Dicembre

psql è il mio client preferito per PostgreSQL, specialmente perché
sono un amante della command line.
Una funzione secondo me piuttosto utile di psql è il single-step mode:
se abilitato psql forza la richiesta di una conferma prima
dell'esecuzione di ogni istruzione SQL. Non è propriamente come
racchiudere il comando in una transazione, quanto piu' come eseguire
ogni istruzione in modo condizionale.
Ciò aiuta ad esempio l'esecuzione di script complessi per verificare
cosa si sta per eseguire.
Abilitare il single-step può essere fatto in due modi:
1) con il flag -s sulla linea di comando
2) con la variabile SINGLESTEP come segue
\set SINGLESTEP 'on'
(e analogamente 'off' per disabilitare la funzione)

La cosa utile del single-step è che procede alla sostituzione delle
variabili prima della richiesta della conferma. Supponiamo di avere uno script come il seguente:

CREATE TABLE foo(
       pk serial not null,
       value integer default 0,
       PRIMARY KEY(pk)
);

INSERT INTO foo(value) VALUES(1);
INSERT INTO foo(value) VALUES(2);
INSERT INTO foo(value) VALUES(3);
INSERT INTO foo(value) VALUES(:var1);


e di avviare psql, impostando il single-step e il valore della variabile var1:

# \set var1 '4'
# \set SINGLESTEP 'on'
# \i script.sql


durante l'esecuzione dello script si avrà che:

***(Single step mode: verify command)**********************
*********************
INSERT INTO foo(value) VALUES(4);
***(press return to proceed or enter x and return to cancel)********************

Quindi non solo viene richiesta conferma dell'esecuzione del comando,
ma si mostra anche il valore espanso della variabile.

Nessun commento: