【问题标题】:Insert multiple rows into two tables using autoincrement Mysql使用自动增量Mysql将多行插入两个表
【发布时间】:2015-10-04 05:55:20
【问题描述】:

我正在尝试将多行插入到由自动增量外键连接的两个表中。我似乎找不到一个好的解决方案。 表格:

  • eav_attribute_option

    • option_id(PK,自动增量)
    • attribute_id
    • 排序顺序
  • eav_attribute_option_value

    • value_id(PK,自动增量)
    • option_id (FK)
    • store_id
    • 价值

我想这样做:

insert into eav_attribute_option(attribute_id) values(100,101,102,103,...);
insert into eav_attribute_option_value(option_id,store_id,value) values 
    (1,0,"English"),(1,1,"German"),(2,0,"English1"),(2,1,"German2")

最好的方法是什么,我似乎找不到一个好的方法。 :

  • 获取下一个自动增量然后插入(需要锁定表之间)
  • 插入第一部分,然后检索 PK 值,构建第二部分并插入(数据有一段时间不完整,第二部分出错会怎样?)
  • 如果可能的话,有什么方法可以通过连接插入?

编辑: 澄清一下,我希望使用尽可能少的查询。我知道我可以做最后插入的 id,但我不想用数千个插入杀死服务器。

【问题讨论】:

  • AFAIK 无法检索 AUTO_INCREMENT 为多插入生成的值。

标签: mysql sql auto-increment multiple-insert


【解决方案1】:
$count = count('Count post value'); // $_POST value count

for($a=0;$a<$count;$a++)
{
    $insert = 'insert into eav_attribute_option(attribute_id,sort_order) values (value1,value2)';
    mysql_query($insert);
    $insert_id = mysql_insert_id();

    $insert2 = 'insert into eav_attribute_option_value(option_id,store_id,value) values 
                ($insert_id,0,"English")';
    mysql_query($insert2);
}

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    insert into eav_attribute_option (attribute_id) values(100);
    
    insert into eav_attribute_option_value (option_id, store_id, value)
    values (LAST_INSERT_ID(), 0, "English");
    

    但是您需要一一插入行。考虑在您的应用程序中执行循环。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2011-07-15
      • 2019-05-16
      相关资源
      最近更新 更多