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