標籤:
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 關閉自動認可