0

我有一个users具有自动递增id列的表。对于每个新用户,我基本上需要在三个不同的表中插入三行,分别是 1. user、 2.user_content和 3. user_preferences。插入的行user_content并由user_preferences它们id的 's 引用,这些行对应于每个用户的 id(保存在 中user

我该如何做到这一点?

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

(注意:我使用的是 MySQL 和 PHP,如果有区别,我使用 abigintid值存储在所有三个表中。)

谢谢!

4

2 回答 2

2

您描述的方法(user首先插入,获取 的结果last_insert_id(),然后使用它插入其他两个表)是完全合理的;我看不出有什么问题。

从技术上讲,结合三个查询并使用LAST_INSERT_ID()MySQL 函数将值插入其他两个表在技术上是可行的,但是如果没有任何相应的好处,这将更加复杂。换句话说,真的不值得去做。

于 2013-01-28T01:44:51.530 回答
1

我看到 3 个选项:

  1. PHP端使用一些*_last_insert_id(如你所描述的)
  2. 创建触发器
  3. 使用存储过程。
于 2013-01-28T01:45:21.833 回答