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