Le affermazioni terminano con un punto e virgola.
In psql
, premendo invio senza un punto e virgola si continua l'istruzione alla riga successiva, aggiungendo ciò che si è scritto nel buffer della query anziché eseguirlo. Noterai che il prompt cambia da dbname=>
a dbname->
per indicare che sei su una linea di continuazione.
regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Nota come dopo aver premuto Invio senza punto e virgola, il prompt cambia in regress-#
e non viene intrapresa alcuna azione. Non esiste una tabella sometable
, quindi se l'istruzione fosse stata eseguita verrebbe segnalato un errore.
Quindi, vedi l'uso di \r
alla riga successiva? Ciò cancella il buffer della query. Nota che il prompt torna a regress=#
quando il buffer viene cancellato, poiché non ci sono più istruzioni parziali memorizzate nel buffer.
Questo mostra come le istruzioni possono essere suddivise su righe:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
La cosa confusa è che psql
comandi backslash come \d
sono terminati da una nuova riga, non da punto e virgola, quindi lo fanno esegui quando premi invio. È utile quando vuoi (diciamo) visualizzare la definizione di una tabella mentre scrivi un'istruzione, ma crea un po' di confusione per i nuovi arrivati.
Per quanto riguarda le tue ulteriori domande:
-
Se c'è un comando "cancella schermo" in
psql
per Windows non l'ho ancora trovato. Su Linux uso semplicemente control-L, come qualsiasi altro programma che utilizza readline. In Windows\! cls
funzionerà. -
DDL in PostgreSQL è transazionale. Puoi
BEGIN
una transazione, emetti alcuni DDL eCOMMIT
l'operazione affinché abbia effetto. Se non esegui il tuo DDL in una transazione esplicita, ha effetto immediato.