2011-05-05 80 views
1

嘿,大家好,
我想做一个表,将有一堆引用用户的ID,并为每个用户将有多个职位,应该也有自己的IDS。我的问题是,如何制作表格,以便为特定用户插入记录时,他们的帖子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 | 
---------------------------------------------------- 
+0

您可以显示,ASCII艺术的,你想要的表是什么样子(一旦被添加数据的) ?我不认为我理解这些条目与用户职位的关系...... =/ – 2011-05-05 15:15:21

+0

您真的需要两个自动增量吗?我相信'user' aldreay在它自己的表中有一个自动增量。 – Quassnoi 2011-05-05 15:15:32

+0

@David今天晚些时候我会把它放在@Quassnoi我实际上并不是指自动增量,而是作为一个动作的东西 – Eliezer 2011-05-05 19:01:53

回答

2

你不需要单独的表来存储每个用户的帖子吗?然后,您可以通过用户ID链接它们并在需要时使用连接来得到信息:

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

等等等等

+0

我想尝试避免制作另一张桌子,因为我的印象是:更多。不过,我在MySQL上有一些noob/hack,所以我真的不知道。这只是一个小小的项目,但如果我有更多的进入MySQL,是否添加另一个表比任何方式更有效率(如果可能的话),我需要做什么? – Eliezer 2011-05-05 19:01:10

+0

这是,特别是当你使用外键允许快速索引。表分离和连接当然不会对这样的事情产生明显的速度影响,而且我总是发现将这些信息分离出来更好更容易。 – Alex 2011-05-06 08:08:09

1

只能有每个表一个自动递增。如果这是一项家庭作业,那么执行此操作的“外部”方式可能是为每个用户创建单独的表格,而不是一个具有多个列的表格。然后,在使用单独的表格时,可以为每个表格使用自动增量。然后,您只需创建一个视图,将表格连接在一起便于阅读。

+0

这不完全是家庭作业,更多的是我为自己做的一个小项目。如果存在这样的事情,我有兴趣做这件事会被认为是“正确的方式”。 – Eliezer 2011-05-05 19:04:31

1

恐怕我不认为每桌可以有多个AUTO_INCREMENT列。如here所述,您可以在复合索引的辅助列上创建它,但不能有多个。

我认为你需要创建一个单独的用户表,将用户标识(user.id)作为对post.user_id的外键引用。现在

您可以创建的(user_id, post_sequence)post一个PRIMARY KEY并在其列规范AUTO_INCREMENT定义post_sequence

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