亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在psql中,為什么有些命令沒有效果?

在psql中,為什么有些命令沒有效果?

在psql中,為什么有些命令沒有效果?有時我的命令psql似乎沒有效果。知道為什么嗎?以下是數據庫中所有表的列表library_development:library_development=> \d                List of relations Schema |       Name        | Type  |  Owner--------+-------------------+-------+----------  public | Pavan             | table | postgres public | schema_migrations | table | sai(2 rows)在此之后我刪除的表Pavan使用:library_development-> drop table Pavan但是表格沒有被刪除,其顯示如下:library_development=> \d                List of relations Schema |       Name        | Type  |  Owner--------+-------------------+-------+----------  public | Pavan             | table | postgres public | schema_migrations | table | sai(2 rows)也:我在Windows中使用PostgreSQL。是否有任何清除控制臺的命令(如Oracle中的cl scr)?在使用DML腳本時,我是否需要在Postgresql中執行“提交”的概念?
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

聲明以分號結尾。

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 TABLEregress-> sometable
regress-> ;ERROR:  table "sometable" does not exist

令人困惑的是,psql反斜杠命令就像\d是換行符終止,而不是分號終止,所以當你按Enter鍵時它們運行。當你想在編寫語句時(比如說)查看表定義時,這很方便,但對于新手來說這有點令人困惑。

至于你的其他問題:

  1. 如果psqlWindows中有“清除屏幕”命令,我還沒有找到它。在Linux上我只使用control-L,與任何其他使用readline的程序相同。在Windows \! cls中將工作。

  2. PostgreSQL中的DDL是事務性的。您可以BEGIN進行事務,發出一些DDL以及COMMIT使事務生效的事務。如果您沒有在顯式事務中執行DDL,則它會立即生效。


查看完整回答
反對 回復 2019-07-23
  • 1 回答
  • 0 關注
  • 935 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號