基本上我试图更新一个表,并且如果发生了某些变化,则将更改行的唯一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,以便在第二个查询中使用。
我不能在第一个表上使用触发器自动更新第二个因为我必须插入"代码"在第二个表中,并且无法在第一个查询中传递它(因为它未在第一个表中使用或插入)。
尽力解释这种情况..希望你理解我,也可以帮助我
非常感谢提前
答案 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”。您可以按此列排序以获取最近修改的记录。