As declarações terminam com ponto e vírgula.
Em
psql
, pressionando enter sem ponto e vírgula continua a instrução na próxima linha, adicionando o que você escreveu no buffer de consulta em vez de executá-lo. Você notará que o prompt muda de dbname=>
para dbname->
para indicar que você está em uma linha de continuação. regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Observe como depois de pressionar enter sem ponto e vírgula, o prompt muda para
regress-#
e nenhuma ação é tomada. Não há tabela sometable
, portanto, se a instrução fosse executada, um erro seria relatado. A seguir, veja o uso de
\r
na próxima linha? Isso limpa o buffer de consulta. Observe que o prompt muda de volta para regress=#
quando o buffer é limpo, pois não há mais nenhuma instrução parcial armazenada em buffer. Isso mostra como as instruções podem ser divididas em linhas:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
O confuso é que
psql
Comandos de barra invertida como \d
são terminados por nova linha, não terminados por ponto e vírgula, então eles fazem executar quando você pressionar enter. Isso é útil quando você deseja (digamos) visualizar uma definição de tabela enquanto escreve uma instrução, mas é um pouco confuso para os recém-chegados. Quanto às suas perguntas adicionais:
-
Se houver um comando "limpar tela" empsql
para Windows ainda não encontrei. No Linux eu apenas uso control-L, da mesma forma que qualquer outro programa que usa readline. No Windows\! cls
vai funcionar.
-
DDL no PostgreSQL é transacional. Você podeBEGIN
uma transação, emitir algum DDL eCOMMIT
a transação para que ela entre em vigor. Se você não fizer seu DDL em uma transação explícita, ele entrará em vigor imediatamente.