MySQL:从表中获取最后一个更新ID以将其插入另一个表中

时间:2015-08-01 09:48:30

标签: php mysql pdo

基本上我试图更新一个表,并且如果发生了某些变化,则将更改行的唯一ID保存在另一个表中(带有其他一些信息)。

它与LAST_INSERT_ID()几乎相同的原则,但更新不插入。我在互联网上搜索,我得到的最好的是这句话:

SET @update_id := NULL;
UPDATE friendships SET status = ?, id = (SELECT @update_id := id) 
       WHERE (from_user = ? AND to_user = ?) OR (to_user = ? AND from_user = ?);
INSERT INTO actions(user_id, code, foreign_id) VALUES(?, ?, SELECT @update_id);

所有这些语句都一起传递给PDO准备执行函数。我没有回复错误,但我更新了第一张表,第二张没有插入。

@update_id应该保存第一个查询中已更改行的id,以便在第二个查询中使用。

我不能在第一个表上使用触发器自动更新第二个因为我必须插入"代码"在第二个表中,并且无法在第一个查询中传递它(因为它未在第一个表中使用或插入)。

尽力解释这种情况..希望你理解我,也可以帮助我

非常感谢提前

2 个答案:

答案 0 :(得分:1)

有两种方法可以插入INSERT ... SELECT和INSERT..VALUES,不要混合它们,删除上一个查询中的SELECT

INSERT INTO actions(user_id, code, foreign_id) VALUES(?, ?,@update_id);

答案 1 :(得分:0)

使用mysql TIMESTAMP列并设置“ON UPDATE CURRENT_TIMESTAMP”。您可以按此列排序以获取最近修改的记录。