a、b是一对多,需要插入一条a记录和多条b记录,需要开启事务。
$id = insert into a values(xx,xx)
;
foreach($b as $v)
{
将上面id赋值到每个数组$b
}
执行 insert into b values ($id,xx),($id,xx)
这样子做会影响效率吧?而且全部需要在事务里面进行。有其它什么办法吗
a、b是一对多,需要插入一条a记录和多条b记录,需要开启事务。
$id = insert into a values(xx,xx)
;
foreach($b as $v)
{
将上面id赋值到每个数组$b
}
执行 insert into b values ($id,xx),($id,xx)
这样子做会影响效率吧?而且全部需要在事务里面进行。有其它什么办法吗
下面的SQL
是否OK,使用LAST_INSERT_ID()
代替 $id
INSERT INTO a(xx,xx)
VALUES ('xx','xx');
INSERT INTO b(xx, xx)
VALUES
('xx',LAST_INSERT_ID()),
('xx',LAST_INSERT_ID());
以php 为例,插入 a 以后,获取 insert_id,下面的就好办了!!
`<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf ("Last inserted record has id %d\n", mysql_insert_id());
?> `
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
我不懂这样处理为什么会影响效率,就已知设定来看,你执行的逻辑是最优了。