我想执行mysql UPDATE查询,然后获得在更改中受影响的id数组。
这是我的更新查询
mysql_query("UPDATE table SET deleted='1' WHERE id='$id' OR foo='$foo' OR bar='$bar'");
我知道我可以这样做,从INSERT查询中获得创建的id
mysql_query("INSERT INTO table (id,foo,bar) VALUES ('$id','$foo','$bar')");
$newid = mysql_insert_id();
我认为MySQL没有其他数据库支持的OUTPUT
或RETURNING
子句。您可以通过在update
:
select
来获得id
s列表。create table temp_table ids_to_update as
SELECT id
FROM table
WHERE (deleted <> '1' or deleted is null) and *id='$id' OR foo='$foo' OR bar='$bar');
请注意,当值不变时,MySQL不会进行更新。因此,第一个条件——你可能觉得重要,也可能觉得不重要。
然后,为了确保完整性(在发生改变数据的事务干预的情况下),您可以这样做:
update table t join
temp_table tt
on t.id = tt.id
set deleted = '1';
您也可以将两个查询包装在单个事务中,但我认为使用临时表来存储id
s可能更容易。