Python 使用if not exists将数据从tableA插入tableB,并从tableB返回插入ID
所以我正在研究这个数据库结构,并试图找出这是否是最好的方法。我从第三方站点提取记录并将其存储到临时表(tableA),然后检查tableB中的重复项,然后将非重复项从tableA插入tableB。每次插入记录时,是否仍需要从表B中获取分配的id?现在,我正在按日期查找表B中插入的最新记录,然后检索ID。有没有更有效的方法?听起来您希望在表B上使用一个名为after insert触发器的东西。这是一段在将一行或多行插入表后运行的代码。文件是 代码类似于:Python 使用if not exists将数据从tableA插入tableB,并从tableB返回插入ID,python,mysql,Python,Mysql,所以我正在研究这个数据库结构,并试图找出这是否是最好的方法。我从第三方站点提取记录并将其存储到临时表(tableA),然后检查tableB中的重复项,然后将非重复项从tableA插入tableB。每次插入记录时,是否仍需要从表B中获取分配的id?现在,我正在按日期查找表B中插入的最新记录,然后检索ID。有没有更有效的方法?听起来您希望在表B上使用一个名为after insert触发器的东西。这是一段在将一行或多行插入表后运行的代码。文件是 代码类似于: CREATE TRIGGER mytrig
CREATE TRIGGER mytrigger AFTER INSERT ON B
FOR EACH ROW BEGIN
-- Do what you want with each row here
END;
您不使用插入忽略有什么原因吗?在我看来,你可以取消整个临时桌子的过程
+----+------+
| 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 |
+----+------+
…然而,如果您刚刚执行了一个插入
(没有忽略
部分),它会给您一个唯一的键约束错误
在获取ID方面,只需使用:
SELECT LAST_INSERT_ID()
…在每次插入后忽略您拨打的电话