Påståenden slutar med semikolon.
I psql
, om du trycker på enter utan semikolon fortsätter satsen till nästa rad och lägger till det du skrev till frågebufferten istället för att köra det. Du kommer att märka att prompten ändras från dbname=>
till dbname->
för att indikera att du är på en fortsättningslinje.
regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Lägg märke till hur efter att jag tryckt på enter utan semikolon ändras prompten till regress-#
och inga åtgärder vidtas. Det finns ingen tabell sometable
, så om satsen hade körts skulle ett fel rapporteras.
Se sedan hur \r
används på nästa rad? Det rensar frågebufferten. Observera att prompten ändras tillbaka till regress=#
när bufferten rensas, eftersom det inte finns någon partiell sats buffrad längre.
Det här visar hur uttalanden kan delas över rader:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
Det förvirrande är att psql
omvänt snedstreck kommandon som \d
är newline-terminated, inte semikolon avslutade, så de gör kör när du trycker på enter. Det är praktiskt när du vill (säg) se en tabelldefinition medan du skriver ett uttalande, men det är lite förvirrande för nykomlingar.
När det gäller dina ytterligare frågor:
-
Om det finns ett "rensa skärm"-kommando i
psql
för Windows har jag inte hittat den än. På Linux använder jag bara kontroll-L, samma som alla andra program som använder läsrader. I Windows\! cls
kommer att fungera. -
DDL i PostgreSQL är transaktionsbaserad. Du kan
BEGIN
en transaktion, utfärda några DDL ochCOMMIT
transaktionen för att få den att träda i kraft. Om du inte gör din DDL i en explicit transaktion träder den i kraft omedelbart.