我想知道是否可以执行SQL查询然后使用生成的ID更新另一个表并继续遍历所有行?
我有这个SQL查询可以工作,但我需要做的是在每行添加到卡后,然后使用最后生成的ID更新merged.cars_id,以便它们被链接。通常我会用PHP来做这件事,但理想情况下我想尽可能用MySQL做。
MAIN QUERY
INSERT INTO cards (first_contact_date, card_type, property_id, user_id)
SELECT first_contact_date, 'P', property_id, user_id FROM merged
然后我需要匹配行(粗略地)
UPDATE merged SET merged.card_id = LAST_INSERT_ID (FROM ABOVE) into the matching record..
这样的事情可能吗?我该怎么做?
答案 0 :(得分:2)
我建议使用MySQL触发器来执行此操作 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
触发器是一个函数,它将在您的表的任何记录完成INSERT或DELETE或UPDATE之后执行。
在您的情况下,您需要在卡上执行AFTER INSERT,只需更新合并的表。确保其AFTER插入,否则无法访问新行的ID。
代码看起来像这样,假设来自牌桌的id字段名为“id”
delimiter |
CREATE TRIGGER updating_merged AFTER INSERT ON cards
FOR EACH ROW BEGIN
UPDATE merged SET card_id = NEW.id;
END;
|
delimiter ;
答案 1 :(得分:0)
我可以建议存储过程吗?
http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
<强> - 编辑 - 强>
啊,是的,触发器。对于这种特殊情况,吉米有答案。为了链接,我将留下这篇文章。
答案 2 :(得分:0)
我会设置一个触发器来执行此操作。对于mysql,请阅读http://dev.mysql.com/doc/refman/5.0/en/triggers.html。这就是设计用于处理的触发器。