Postgresql
pgsql 或任何數據庫中的批量插入行為
我正在使用 PostgreSQL 9.2.4。
我正在處理具有大量數據的多個表。
我有兩個表 Table_One,其中一個欄位為 varchar(250),而 Table_Two 欄位之一為 varchar(200)。
可以說,Table_One 有 20 條記錄,其中 2 條記錄的欄位包含 250 個字元。
我正在通過如下查詢進行批量插入
insert into Table_Two(id, INSTANCEwithVarchar, MIN, MAX)(SELECT id, INSTANCEwithVarchar, MIN, MAX from Table_One)
插入具有 varchar 250 的 Table_One 記錄時會出現異常。
我的問題是,
Table_Two 會插入 18 條記錄嗎?
或者即使 20 條記錄中的一條記錄違反了約束,批量插入 Table_Two 也會完全失敗?
如果沒有,假設 Table_Two 增加了 18 條記錄,那麼失敗的順序是什麼?如果Table_One的第一條記錄有varchar 250,那麼整個過程會失敗還是pgsql本身忽略失敗並成功添加剩餘記錄?
(使用 PostgreSQL 9.2)
您的語句在事務中執行。如果還沒有打開的事務,則僅為該語句創建一個事務,如果該語句成功,則在最後自動送出。
如果語句遇到錯誤,事務會自動回滾,所以沒有任何作用。
整個聲明要麼生效,要麼都不生效。
(請注意,您可以嘗試確定這一點)。