多个MySQL查询(无PHP)

时间:2012-07-28 01:09:31

标签: mysql

我想知道是否可以执行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..

这样的事情可能吗?我该怎么做?

3 个答案:

答案 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。这就是设计用于处理的触发器。