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