[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