postgresql 關閉自動認可

來源:互聯網
上載者:User

標籤:

1. 簡介說明 
          我們知道oracle中sqlplus裡面執行dml語句;是需要提交commit;若錯了;也可以復原rollback; 然而在postgresql裡面預設是自動認可;執行完就馬上提交了,不能復原,這樣容易導致誤操作的發生,有沒有什麼辦法避免這個風險呢?當然有,在psql中預設是開啟自動認可的,我們可以關閉自動認可。 

2. 操作驗證

 
[[email protected] ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help. xzfb=> create table lottu01(id int);CREATE TABLExzfb=> select * from lottu01; id ----(0 rows) xzfb=> insert into lottu01 values (1001);INSERT 0 1xzfb=> rollbackxzfb-> ;WARNING:  there is no transaction in progressROLLBACKxzfb=> select * from lottu01;  id  ------ 1001(1 row)
 從上面操作下;postgresql是自動認可的;如何關閉呢;執行 \set AUTOCOMMIT off 
[[email protected] ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help. xzfb=> \set AUTOCOMMIT offxzfb=> insert into lottu01 values (1002); INSERT 0 1xzfb=> commit;                                            --1002此處提交COMMITxzfb=> insert into lottu01 values (1003);INSERT 0 1xzfb=> rollback;                                           --1003復原了ROLLBACKxzfb=> select * from lottu01;  id  ------ 1001 1002(2 rows)
 

3. 自動關閉提交


如果每次進入psql後都手工設定\set AUTOCOMMIT off比較麻煩,可以把這句設定到.psqlrc檔案: 
[[email protected] ~]$ cat .psqlrc\set AUTOCOMMIT off[[email protected] ~]$ 
  

4. 備忘

          但是這樣設定了;也存在不習慣的地方。         1. 操作錯誤之後;執行正確的dml語句會報錯“ERROR:  current transaction is aborted, commands ignored until end of transaction block”;避免是執行commit;或者rollback     
[[email protected] ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help. xzfb=> insert into lottu01 values (‘1523‘);INSERT 0 1xzfb=> insert into lottu01 values (‘a1523‘);              --插入字串。ERROR:  invalid input syntax for integer: "a1523"LINE 1: insert into lottu01 values (‘a1523‘);                                    ^xzfb=> insert into lottu01 values (1523);            --執行正確的dml語句會報錯ERROR:  current transaction is aborted, commands ignored until end of transaction blockxzfb=> rollback;                            --避免下面繼續報錯ROLLBACKxzfb=> insert into lottu01 values (1523);INSERT 0 1
 2. 執行ddl語句;也是需要執行commit,當然也可以rollback 
xzfb=> create table t(id int);CREATE TABLExzfb=> select * from t; id ----(0 rows) xzfb=> \q[[email protected] ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help. xzfb=> select * from t;ERROR:  relation "t" does not existLINE 1: select * from t;                      ^

3. 上面除了設定關閉自動認可;我們也可以通過begin end;去執行。略

   
作者 : li0924
時間 : 2016-01-22
本文著作權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連.

postgresql 關閉自動認可

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.