作者noapaov (单身汉)
看板Database
标题[SQL ] 批次更新失败问题
时间Thu Jul 2 08:32:36 2015
资料库名称: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删除失败的情况?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.181.227
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1435797159.A.AAE.html
※ 编辑: noapaov (114.34.181.227), 07/02/2015 08:32:59
1F:推 tas72732002: 我觉得应该有可能发生 07/03 19:54
2F:推 wen001: Commit机制问题,ACID, 真发生这种事资料库可以丢了。 07/04 09:30
3F:推 wen001: 把一个批次执行完再commit就好了。 07/04 09:32
4F:→ noapaov: Tranaction 会影响 执行的效率 07/04 09:57
5F:→ noapaov: 在不使用Transaction的情况, 是否会有失败的情况 07/04 09:57
6F:→ wen001: 会,但不用transaction的话你"必须"要有机制避免这 07/04 11:09
7F:→ wen001: 问题,不管他会不会发生。 07/04 11:09
8F:→ wen001: 直接用更新到一半异常断电去想好了,更新到一半异常断电, 07/04 11:12
9F:→ wen001: 你的资料不就有问题了? 07/04 11:13
10F:→ wen001: 资料要的是可靠切不屈服於执行效率,用 transaction 也不 07/04 11:13
11F:→ wen001: 应该有效率问题。 07/04 11:13