[SQL ] 批次更新失敗問題

作者: noapaov (單身漢)   2015-07-02 08:32:36
資料庫名稱:MySQL
資料庫版本:5.X
內容/問題描述:
請問一下各位, SQL在執行多筆資料新增、刪除、修改更時候,
例如 UPDATE test SET is_use = 0 WHERE pid > 5;
INSERT INTO test (pid, is_use) VALUES (1, 1), (2, 1);
DELETE FROM test WHERE pid > 5;
有沒有可能沒有執行完全, 也就是說, 假設pid 目前有 1 ~ 10
在執行DELETE FROM test WHERE pid > 5 , 有沒有可能因系統的問題造成
只更新了 pid 6,7 而 8,9,10刪除失敗的情況?
作者: tas72732002 (蔥頭)   2015-07-03 19:54:00
我覺得應該有可能發生
作者: wen001 (專長就資料庫阿,奇怪嗎?)   2015-07-04 09:30:00
Commit機制問題,ACID, 真發生這種事資料庫可以丟了。把一個批次執行完再commit就好了。
作者: noapaov (單身漢)   2015-07-04 09:57:00
Tranaction 會影響 執行的效率在不使用Transaction的情況, 是否會有失敗的情況
作者: wen001 (專長就資料庫阿,奇怪嗎?)   2015-07-04 11:09:00
會,但不用transaction的話你"必須"要有機制避免這問題,不管他會不會發生。直接用更新到一半異常斷電去想好了,更新到一半異常斷電,你的資料不就有問題了?資料要的是可靠切不屈服於執行效率,用 transaction 也不應該有效率問題。

Links booklink

Contact Us: admin [ a t ] ucptt.com