每个表有多个AutoIncrement

时间:2011-05-05 15:11:18

标签: auto-increment mysql

嘿大家,唉 我正在尝试创建一个表,其中有一堆id引用用户,并且对于每个用户,将有多个帖子也应该有自己的ID。我的问题是我如何制作表格,以便在为某个用户插入记录时,他们的帖子ID应该增加1.意思是用户1将有帖子1,2,3和4,用户2将有帖子1,2,3,4,5,6和7等......

event_id是表的主键,FK_user_ID是映射回用户表的外键,post_id是该用户的帖子号码(这是我的问题列),帖子是帖子

----------------------------------------------------
|  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    |
----------------------------------------------------

4 个答案:

答案 0 :(得分:2)

您是否需要单独的表来存储每个用户的帖子?然后,您可以通过用户ID链接它们,并在需要时使用联接来获取信息:

---------------------
| User_ID | Post_ID |
|    1    |    1    |
|    2    |    2    |
|    2    |    3    |
|    3    |    4    |
|    4    |    5    |
---------------------

等等

答案 1 :(得分:1)

每个表只能有一个自动增量。如果这是一个家庭作业,那么“开箱即用”的方式可能是为每个用户创建单独的表,而不是一个包含多列的表。然后,使用单独的表时,可以为每个表使用自动增量。然后,您只需创建一个视图即可将表连接在一起以便于阅读。

答案 2 :(得分:1)

我担心我认为每张桌子不能有多个AUTO_INCREMENT列。您可以在here所述的复合索引中的辅助列上使用它,但不能有多个。

我认为您需要创建一个单独的用户表,将用户ID(user.id)作为post.user_id的外键引用。

现在,您可以在PRIMARY KEY的{​​{1}}上创建post,并在其列规范中定义(user_id, post_sequence) {。}}。

答案 3 :(得分:1)

使用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