下面是一小段代码:
function setList ($to, array $array)
{
DELETE FROM list WHERE A = $to;
foreach ($array as $id)
{
INSERT INTO LIST ($to, $id);
}
}
setList (2, []);
setList (2, [1,2,3,4]);
setList (2, [2,3]);
setList (2, [3,4,5,6]);这是为了更新列表,但为了避免重复的条目-首先删除所有条目。它是MyIsam,所以基本上没有办法使用事务。有没有一种同时delete+insert的方法?
发布于 2016-08-27 17:57:27
正如this (和许多其他问题)所讨论的,MyISAM引擎不支持事务。如果你想要事务支持,你真的应该考虑使用InnoDB。
但是,通过认识到所有INSERT语句都可以在一条语句中一起完成,而不是分开完成,即使使用MyISAM,也可以使当前代码更具原子性。
$sql = array();
foreach ($data as $row) {
$sql[] = '("'.mysql_real_escape_string($row['to']).'", '.$row['id'].')';
}
mysql_query('INSERT INTO table (to, id) VALUES '.implode(',', $sql));这也有一个很好的副作用,那就是插入的效率也会更高。
https://stackoverflow.com/questions/39179662
复制相似问题