Oświadczenia kończą się średnikami.
W psql
, naciśnięcie enter bez średnika kontynuuje instrukcję do następnego wiersza, dodając to, co napisałeś do bufora zapytania, zamiast je wykonywać. Zauważysz, że znak zachęty zmienia się z dbname=>
do dbname->
aby wskazać, że jesteś na linii kontynuacji.
regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Zwróć uwagę, że po naciśnięciu klawisza Enter bez średnika monit zmienia się na regress-#
i nie podejmuje się żadnych działań. Nie ma tabeli sometable
, więc jeśli instrukcja zostanie uruchomiona, zostanie zgłoszony błąd.
Następnie zobacz użycie \r
w następnej linii? To czyści bufor zapytań. Zauważ, że monit zmienia się z powrotem na regress=#
kiedy bufor jest wyczyszczony, ponieważ nie ma już buforowanej częściowej instrukcji.
To pokazuje, w jaki sposób można podzielić oświadczenia na wiersze:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
Mylące jest to, że psql
polecenia odwróconego ukośnika, takie jak \d
są zakończone znakiem nowej linii, a nie średnikiem, więc tak uruchom po naciśnięciu klawisza enter. Jest to przydatne, gdy chcesz (powiedzmy) wyświetlić definicję tabeli podczas pisania oświadczenia, ale jest to trochę mylące dla nowicjuszy.
Jeśli chodzi o dodatkowe pytania:
-
Jeśli istnieje polecenie „wyczyść ekran” w
psql
dla Windows jeszcze go nie znalazłem. W Linuksie po prostu używam control-L, tak samo jak każdy inny program używający readline. W systemie Windows\! cls
zadziała. -
DDL w PostgreSQL jest transakcyjny. Możesz
BEGIN
transakcji, wydaj trochę DDL iCOMMIT
transakcji, aby odniosła skutek. Jeśli nie wykonasz swojego DDL w wyraźnej transakcji, natychmiast zacznie ona obowiązywać.