0

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

4

2 回答 2

0

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

代码类似于:

CREATE TRIGGER mytrigger AFTER INSERT ON B
  FOR EACH ROW BEGIN
      -- Do what you want with each row here
  END;
于 2013-04-02T02:44:15.067 回答
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您拨打的每个电话之后。

于 2013-04-02T02:44:56.453 回答