2015-03-30 17 views

回答

6

你自己的答案(現在刪除)是誤解的東西。單個INSERT聲明是總是原子。您的示例INSERT與兩行是全部或全部沒有 - 兩行都插入或沒有。

自動提交是否啓用取決於您的客戶端。

psql autocommit默認啓用。這意味着每個語句都作爲它自己的事務運行,除非您將(任意數量)語句包裝到顯式事務包裝中。因此,這是 「全或無」:

INSERT INTO test (name) VALUES ('1'), ('2'); 

就像這樣:

BEGIN; 
INSERT INTO test (name) VALUES ('1'); 
INSERT INTO test (name) VALUES ('2'); 
COMMIT; 

但不是這樣的:

INSERT INTO test (name) VALUES ('1'); 
INSERT INTO test (name) VALUES ('2'); 

的pgAdmin一切你從查詢窗口發送的一旦默認包裝到交易中。