MySQL - 我应该使用last_insert_id()吗?或者是其他东西?

时间:2013-01-28 01:40:41

标签: php mysql

我有一个表users,其中包含一个自动递增的id列。对于每个新用户,我基本上需要在三个不同的表中插入三行,分别为1. user,2。user_content和3. user_preferences。插入user_contentuser_preferences的行由id引用,这些行对应于每个用户的ID(保存在user

我如何做到这一点?

我应该首先执行INSERT INTO user查询,使用id获取自动递增的last_insert_id(),然后使用获取的用户ID获取其他两个INSERT INTO查询吗?或者,有没有更简洁的方法来做到这一点?

(注意:我使用的是MySQL和PHP,如果它有所不同,我使用bigint在所有三个表中存储id值。)

谢谢!

2 个答案:

答案 0 :(得分:2)

您所描述的方法(首先插入user,取last_insert_id()的结果,并使用它插入其他两个表)是完全合理的;我认为没有错。

在技术上可能将三个查询组合在一起并使用LAST_INSERT_ID() MySQL函数将值插入到其他两个表中,但这会更复杂,没有任何相应的好处。换句话说,不值得做。

答案 1 :(得分:1)

我看到3个选项:

  1. PHP端使用一些*_last_insert_id(正如您所描述的)
  2. 创建触发器
  3. 使用存储过程。