Иметь более одного автоинкремента на таблицу - PullRequest
1 голос
/ 05 мая 2011

Привет всем,
Я пытаюсь создать таблицу, которая будет иметь несколько идентификаторов, ссылающихся на пользователя, и для каждого пользователя будет несколько сообщений, которые также должны иметь свои собственные идентификаторы. Мой вопрос заключается в том, как мне составить таблицу, чтобы при вставке записи для определенного пользователя их идентификатор поста увеличивался на 1. Это означает, что у пользователя 1 будут сообщения 1, 2, 3 и 4, у пользователя 2 будут сообщения. 1,2,3,4,5,6, 7 и т. Д. ...

event_id - это первичный ключ для таблицы, FK_user_ID - это внешний ключ, который сопоставляется с таблицей пользователя, post_id - это номер сообщения для этого пользователя (что является моей проблемой), а post - это сообщение * 1004. *

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

2 голосов
/ 05 мая 2011

Не требуется ли отдельная таблица для хранения сообщений для пользователя?Затем вы можете связать их с помощью идентификатора пользователя и использовать объединения для получения информации, когда это необходимо:

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

и т. Д.

1 голос
/ 05 мая 2011

С 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
1 голос
/ 05 мая 2011

Боюсь, я не думаю, что вы можете иметь более одного AUTO_INCREMENT столбца на таблицу. Вы можете иметь его во вторичном столбце в составном индексе, как описано здесь , но вы не можете иметь более одного.

Я думаю, что вам нужно создать отдельную пользовательскую таблицу с идентификатором пользователя (user.id) в качестве ссылки на внешний ключ для post.user_id.

Теперь вы можете создать PRIMARY KEY для post из (user_id, post_sequence) и определить post_sequence с AUTO_INCREMENT в спецификации столбца.

1 голос
/ 05 мая 2011

Вы можете иметь только одно автоинкремент на таблицу. Если это домашнее задание, то «нестандартным» способом для этого может быть создание отдельных таблиц для каждого пользователя вместо одной таблицы с несколькими столбцами. Затем при использовании отдельных таблиц вы можете использовать автоинкремент для каждой таблицы. Затем вы просто создадите представление, чтобы объединить таблицы для удобства чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...