3
我想知道PostgreSQL多行INSERT
是否安全(在系統/數據庫故障的情況下插入所有數據或沒有插入數據)。查詢範例:是PostgreSQL多行插入全部還是全無?
INSERT INTO "tests" ("name") VALUES ('1'), ('2')
我想知道PostgreSQL多行INSERT
是否安全(在系統/數據庫故障的情況下插入所有數據或沒有插入數據)。查詢範例:是PostgreSQL多行插入全部還是全無?
INSERT INTO "tests" ("name") VALUES ('1'), ('2')
你自己的答案(現在刪除)是誤解的東西。單個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一切你從查詢窗口發送的一旦默認包裝到交易中。