如果不存在则使用将tableA中的数据插入tableB并从tableB返回插入ID

时间:2013-04-02 02:36:42

标签: python mysql

所以我正在研究这个数据库结构,并试图弄清楚这是否是最好的方法。我从第三方站点提取记录并将它们存储到临时表(tableA)然后检查tableB中的重复项,然后将非重复项插入tableA中的tableB中。无论如何都要在每次插入记录时从tableB获取id?现在我正在寻找按日期插入tableB的最新记录,然后检索ID。有更有效的方法吗?

2 个答案:

答案 0 :(得分:0)

听起来你想要在表B上使用一种称为后插入触发器的东西。这是在将一行或多行插入表后运行的一段代码。文档为here

代码如下:

CREATE TRIGGER mytrigger AFTER INSERT ON B
  FOR EACH ROW BEGIN
      -- Do what you want with each row here
  END;

答案 1 :(得分:0)

您是否有理由不使用INSERT IGNORE?在我看来,你可以取消整个临时表过程...

+----+------+
| id | name |
|----|------|
|  1 | adam |
|  2 |  bob |
|  3 | carl |
+----+------+

如果id有唯一约束,那么:

INSERT IGNORE INTO tableName (id, name) VALUES (3, "carl"), (4, "dave");

...将导致:

+----+------+
| id | name |
|----|------|
|  1 | adam |
|  2 |  bob |
|  3 | carl |
|  4 | dave |
+----+------+

...如果您刚刚完成INSERT(没有IGNORE部分),它会给您一个唯一的键约束错误。

在获取ID方面,只需使用:

SELECT LAST_INSERT_ID()

...每次INSERT IGNORE来电之后。

相关问题