Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用if not exists将数据从tableA插入tableB,并从tableB返回插入ID_Python_Mysql - Fatal编程技术网

Python 使用if not exists将数据从tableA插入tableB,并从tableB返回插入ID

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

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

听起来您希望在表B上使用一个名为after insert触发器的东西。这是一段在将一行或多行插入表后运行的代码。文件是

代码类似于:

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()
…在每次
插入后忽略您拨打的电话