Auto increment 每个表有多个自动增量
大家好,Auto increment 每个表有多个自动增量,auto-increment,mysql,Auto Increment,Mysql,大家好, 我试图创建一个表,其中包含一组指向某个用户的ID,对于每个用户,都会有多个帖子,这些帖子也应该有自己的ID。我的问题是如何创建表,以便在为某个用户插入记录时,他们的post id应该增加1。这意味着用户1将有帖子1、2、3和4,用户2将有帖子1、2、3、4、5、6和7,等等 event_id是表的主键,FK_user_id是映射回用户表的外键,post_id是该用户的post是哪个编号(这是我的问题列),post是post -------------------------------
我试图创建一个表,其中包含一组指向某个用户的ID,对于每个用户,都会有多个帖子,这些帖子也应该有自己的ID。我的问题是如何创建表,以便在为某个用户插入记录时,他们的post id应该增加1。这意味着用户1将有帖子1、2、3和4,用户2将有帖子1、2、3、4、5、6和7,等等 event_id是表的主键,FK_user_id是映射回用户表的外键,post_id是该用户的post是哪个编号(这是我的问题列),post是post
----------------------------------------------------
| event_id | FK_user_ID | post_id | post |
| 1 | 1 | 1 | hey |
| 2 | 1 | 2 | you too |
| 3 | 1 | 3 | ok |
| 4 | 2 | 1 | foo |
| 5 | 2 | 2 | bar |
----------------------------------------------------
您不需要一个单独的表来存储每个用户的帖子吗?然后,您可以通过用户id链接它们,并在需要时使用连接来获取信息: --------------------- | User_ID | Post_ID | | 1 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | --------------------- --------------------- |用户ID |发布ID| | 1 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | ---------------------
etc etc您不需要一个单独的表来存储每个用户的帖子吗?然后,您可以通过用户id链接它们,并在需要时使用连接来获取信息: --------------------- | User_ID | Post_ID | | 1 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | --------------------- --------------------- |用户ID |发布ID| | 1 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | ---------------------
etc etc每个表只能有一个自动增量。如果这是一个家庭作业,那么“开箱即用”的方法可能是为每个用户创建单独的表,而不是一个包含多个列的表。然后,当使用单独的表时,可以对每个表使用自动增量。然后,您只需创建一个视图,将表连接在一起以便于阅读。每个表只能有一个自动增量。如果这是一个家庭作业,那么“开箱即用”的方法可能是为每个用户创建单独的表,而不是一个包含多个列的表。然后,当使用单独的表时,可以对每个表使用自动增量。然后,您只需创建一个视图,将表连接在一起以便于阅读。恐怕我认为每个表不能有多个
自动增量列。可以将其放在复合索引的第二列上,如前所述,但不能有多个
我认为您需要创建一个单独的用户表,将用户id(user.id
)作为post.user\u id
的外键引用
现在,您可以在(用户id,post\u序列)
的post
上创建主键
,并在其列规范中使用AUTO\u INCREMENT
定义post\u序列。
恐怕每个表不能有多个AUTO\u INCREMENT
列。可以将其放在复合索引的第二列上,如前所述,但不能有多个
我认为您需要创建一个单独的用户表,将用户id(user.id
)作为post.user\u id
的外键引用
现在,您可以在(用户id,post\u序列)
的post
上创建主键
,并在其列规范中使用自动增量
定义post\u序列。使用MyISAM
,这是可能的:
CREATE TABLE posts (user_id INT NOT NULL, post_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (user_id, post_id)) ENGINE=MyISAM;
INSERT
INTO posts
VALUES
(1, NULL),
(1, NULL),
(1, NULL),
(2, NULL),
(2, NULL);
结果:
1, 1
1, 2
1, 3
2, 1
2, 2
有了MyISAM
,这是可能的:
CREATE TABLE posts (user_id INT NOT NULL, post_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (user_id, post_id)) ENGINE=MyISAM;
INSERT
INTO posts
VALUES
(1, NULL),
(1, NULL),
(1, NULL),
(2, NULL),
(2, NULL);
结果:
1, 1
1, 2
1, 3
2, 1
2, 2
在ASCII艺术中,您是否可以显示希望表格的外观(添加数据后)?我想我不明白这些条目是如何与用户的帖子联系在一起的=/你真的需要两个自动增量吗?我相信user
Aldray在它自己的表中有一个自动增量。@David我今天晚些时候会把它放在这里@Quassnoi我不是指自动增量,而是指一个能起作用的东西。你能用ASCII艺术来展示你想要的表的样子吗(一旦添加了数据)?我想我不明白这些条目是如何与用户的帖子联系在一起的=/你真的需要两个自动增量吗?我相信,user
Aldray在自己的表中有一个自动增量。@David我今天晚些时候会把它放在这里@Quassnoi我实际上不是指自动增量,而是指一个可以作为一个自动增量的东西,我想尝试避免制作另一个表,因为我觉得少就是多。然而,我对MySQL有点不在行,所以我真的不知道。这只是一个小的宠物项目,但如果我对MySQL有更多的了解,添加另一个表是否比我上面要求的任何方法(如果可能的话)更有效?是的,特别是当使用外键时,允许快速索引。表分离和连接当然不会对这样的事情产生显著的速度影响,我总是发现分离出这样的信息更好、更容易。我想尝试避免创建另一个表,因为我觉得越少越好。然而,我对MySQL有点不在行,所以我真的不知道。这只是一个小的宠物项目,但如果我对MySQL有更多的了解,添加另一个表是否比我上面要求的任何方法(如果可能的话)更有效?是的,特别是当使用外键时,允许快速索引。表分离和连接当然不会对这样的事情产生显著的速度影响,我总是发现分离这样的信息更好、更容易。这不完全是家庭作业,更多的是我自己做的一个小项目。我对做这件事很感兴趣,如果有这样的事情,我会认为这是“正确的方式”。这不完全是家庭作业,更多的是我自己做的一个小项目。我感兴趣的是,如果存在这样的事情,我会认为这是“正确的方式”。