2011-04-29 22 views
1

假设我们有两个表:插入从表中自动生成的索引到另一个表

  • table1 (id, name, type)其中id是主键,和自增
  • table2 (item_id, place)其中item_ididtable1

我要做到以下几点:

insert into table1(name, type) values (y, z); 

假设该查询分配id=x该行,那么:

insert into table2(item_id, place) values (x, w); 

我怎么能这样做呢? 换句话说,我怎么能得到刚添加的行的id

+0

你是否仅仅通过mysql来做这件事?是否有任何语言参与? – 2011-04-29 16:06:51

+0

单行插入或设置?相同的来源,例如bcp或临时表? – gbn 2011-04-29 16:12:04

回答

4
insert into table1(name, type) values (y, z); 
insert into table2(item_id, place) values (LAST_INSERT_ID() , w); 

LAST_INSERT_ID()会为您做到这一点。大多数编程语言都有一个特殊的函数可以为你调用,但它在纯粹的MySQL中起作用。

+1

这是一个web脚本,如果两个用户在同一时间使用该页面,第一个插入值,然后插入第二个用户,那么这是否意味着LAST_INSERT_ID()会返回第二个用户插入的值,或者第一个“当前”? – 2011-04-29 16:28:34

+1

该变量适用于“每个连接”,所以只要您不共享用户之间的连接,这种情况就不会发生。 – Konerak 2011-04-30 09:44:58

相关问题