楼主:
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删除失败的情况?
作者: wen001 (专长就数据库阿,奇怪吗?) 2015-07-04 09:30:00
Commit机制问题,ACID, 真发生这种事数据库可以丢了。把一个批次执行完再commit就好了。
作者: wen001 (专长就数据库阿,奇怪吗?) 2015-07-04 11:09:00
会,但不用transaction的话你"必须"要有机制避免这问题,不管他会不会发生。直接用更新到一半异常断电去想好了,更新到一半异常断电,你的资料不就有问题了?资料要的是可靠切不屈服于执行效率,用 transaction 也不应该有效率问题。