将自动递增主键插入另一个表(稍后加入)

时间:2009-09-15 01:47:53

标签: sql mysql

我对MySQL很陌生,我希望我能把事情搞定。 我已经建立了一个包含3个表的数据库,其列如下(主键是PK):

Users

  • uid(PK)
  • 用户名

Directories

  • UID
  • 路径
  • 项目

DirInfo

  • infoID(PK)
  • 尺寸
  • dateofcheck
  • 存在
  • PATHID

当我向Directories.pathID插入NULL值时,我得到一个新的pathID(自动增量)。然后,我如何将相同的pathID插入DirInfo.pathID?

我是否必须对INSERT和SELECT运行多个查询以使每个表中的每列保持最新,或者我是否做错了。

1 个答案:

答案 0 :(得分:5)

函数LAST_INSERT_ID()返回INSERT期间自动增量列分配的最后一个值。随后可以在插入从属表时使用它。

INSERT INTO Directories (pathId) VALUES (NULL); -- auto-increment
INSERT INTO DirInfo (pathId) VALUES ( LAST_INSERT_ID() );

或者您可以设置MySQL用户变量,以便重复使用它。

INSERT INTO Directories (pathId) VALUES (NULL); -- auto-increment
SET @pathId := LAST_INSERT_ID();
INSERT INTO DirInfo (pathId) VALUES ( @pathId );