我有一个调用以下MySQL查询的PHP脚本:
UPDATE table1
SET column1=1
WHERE column1=0
PHP脚本然后返回mysqli_affected_rows
。
应该有可能只获得一次肯定结果,因为在执行此脚本后将不会有column1=0
行。
我的问题是:如果此脚本多次并发执行,理论上是否可以多次获得正面结果?
答案 0 :(得分:1)
这取决于用于表的数据库引擎。
如果您正在使用MyISAM,则会在执行查询时锁定整个表格。尝试访问该表的其他查询将被阻止,直到完成为止。当它们运行时,将没有符合条件的行。因此,只有其中一个会执行任何更新。
如果你正在使用InnoDB,它会锁定它更新的各个行。不同的并发查询可以更新表的不同行,因此它们每个都会得到非零结果。