Изявленията завършват с точка и запетая.
В psql
, натискането на enter без точка и запетая продължава оператора на следващия ред, добавяйки написаното от вас към буфера на заявката, вместо да го изпълнява. Ще забележите, че подканата се променя от dbname=>
към dbname->
за да посочите, че сте на линия за продължаване.
regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR: table "sometable" does not exist
regress=>
Забележете как след като натисна enter без точка и запетая, подканата се променя на regress-#
и не се предприемат никакви действия. Няма таблица sometable
, така че ако изявлението се е изпълнило, ще бъде докладвана грешка.
След това вижте използването на \r
на следващия ред? Това изчиства буфера на заявката. Забележете, че подканата се променя обратно на regress=#
когато буферът се изчисти, тъй като вече няма буфериран частичен израз.
Това показва как изразите могат да бъдат разделени на редове:
regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR: table "sometable" does not exist
Объркващото е, че psql
обратно наклонена черта команди като \d
са завършвани с нов ред, а не с точка и запетая, така че правят стартирайте, когато натиснете enter. Това е удобно, когато искате (да речем) да видите дефиниция на таблица, докато пишете изявление, но е малко объркващо за новодошлите.
Колкото до допълнителните ви въпроси:
-
Ако има команда "изчистване на екрана" в
psql
за Windows още не съм го намерил. В Linux просто използвам control-L, както всяка друга програма за четене. В Windows\! cls
ще работи. -
DDL в PostgreSQL е транзакционен. Можете да
BEGIN
транзакция, издаване на DDL иCOMMIT
сделката, за да влезе в сила. Ако не направите своя DDL в изрична транзакция, той влиза в сила незабавно.