1

我想知道是否可以执行 SQL 查询,然后使用生成的 ID 更新另一个表并继续遍历所有行?

我有这个有效的 SQL 查询,但我需要做的是在将每一行添加到卡片之后,然后使用最后生成的 ID 更新 merged.cars_id 以便将它们链接起来。通常我会用 PHP 来做这件事,但理想情况下,如果可能的话,我只想用 MySQL 来做。

主要查询

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..

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

4

3 回答 3

2

我建议使用 MySQL 触发器来执行此操作 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

触发器是一个函数,它将在对表的任何记录执行 INSERT、DELETE 或 UPDATE 之后或之前执行。

在您的情况下,您需要在仅更新合并表的卡上执行 AFTER INSERT。确保它在插入之后,否则您将无法访问新行的 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 ;
于 2012-07-28T01:13:01.563 回答
0

我可以建议存储过程吗?

http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

- 编辑 -

啊,是的,触发器。对于这种特殊情况,吉米有答案。为了链接,我将离开这篇文章。

于 2012-07-28T01:14:04.340 回答
0

我会设置一个触发器来做到这一点。对于 mysql,请阅读http://dev.mysql.com/doc/refman/5.0/en/triggers.html。这就是触发器旨在处理的内容。

于 2012-07-28T01:14:12.730 回答