Udsagn slutter med semikolon.
I psql
, ved at trykke på enter uden semikolon fortsætter sætningen til næste linje, og tilføjer det du skrev til forespørgselsbufferen i stedet for at udføre det. Du vil bemærke, at prompten ændres fra dbname=>
til dbname->
for at angive, at du er på en fortsættelseslinje.
regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Bemærk, hvordan prompten ændres til regress-#
, når jeg har trykket på enter uden semikolon. og der bliver ikke gjort noget. Der er ingen tabel sometable
, så hvis sætningen var kørt, ville der blive rapporteret en fejl.
Se derefter brugen af \r
på næste linje? Det rydder forespørgselsbufferen. Bemærk, at prompten skifter tilbage til regress=#
når bufferen er ryddet, da der ikke er nogen delvis sætning bufferet længere.
Dette viser, hvordan udsagn kan opdeles på tværs af linjer:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
Det forvirrende er, at psql
backslash-kommandoer som \d
er newline-terminated, ikke semikolon-terminated, så de gør løb når du trykker enter. Det er praktisk, når du vil (f.eks.) se en tabeldefinition, mens du skriver en erklæring, men det er lidt forvirrende for nybegyndere.
Med hensyn til dine yderligere spørgsmål:
-
Hvis der er en "ryd skærm"-kommando i
psql
til Windows har jeg ikke fundet det endnu. På Linux bruger jeg bare kontrol-L, det samme som ethvert andet readline-brugende program. I Windows\! cls
vil virke. -
DDL i PostgreSQL er transaktionsbestemt. Du kan
BEGIN
en transaktion, udstede nogle DDL ogCOMMIT
transaktionen for at få den til at træde i kraft. Hvis du ikke foretager din DDL i en eksplicit transaktion, træder den i kraft med det samme.