2

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

  • eav_attribute_option

    • option_id(PK,自动增量)
    • 属性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,但我不想用数千个插入来杀死服务器。

4

2 回答 2

0

你可以尝试这样的事情:

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");

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

于 2015-07-15T11:19:37.570 回答
0
$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);
}
于 2015-07-15T11:30:01.163 回答