2014-01-03 2 views
0

Мне было интересно, можно ли создать таблицу, в которой хранится информация о входах пользователей с использованием идентификатора id и игры, который может отображаться только один раз в день.MySQL DB дублирует уникальные ключи

Так что каждый раз, когда пользователь регистрируется в нем, он записывает свой идентификатор, идентификатор игры и свой журнал в день, и я хочу, чтобы их идентификатор и идентификатор игры были уникальными для этого журнала в день, поэтому db будет регистрировать, например, пользовательскую игру 123 пользователя A один раз на 1-1-14, и не будет регистрировать это снова, если пользователь снова войдет в систему в тот же день. но будет регистрировать его снова на 2-1-14, однако может снова войти в систему пользователя на 1-1-14, если это был пользователь 1234 игра B

извините заранее, если это не хорошее объяснение или заголовок = P

TABLE A 
USERID GAMEID TIME 
123  A  1-1-14 
123  B  1-1-14 
123  A  2-1-14 
+0

Вы можете сделать это с помощью уникального ключа, или вы можете просто проверить на входе в систему, если пользователь уже вставлен сегодня, а если нет, вставьте. –

+0

Сделайте все 3 уникальным? – law

+0

Я не понимаю, что это значит. –

ответ

1

Если вы сделаете первичный ключ все три поля (идентификатор пользователя, GameID, время), то это не позволит вам вставить то, что вы называете дубликат. Если вы создаете первичный ключ, это не вариант, а просто используйте уникальный.

CREATE TABLE A (
    userid ..., 
    gameid ..., 
    time ..., 
    UNIQUE (userid, gameid, time) 
); 

Это делает комбинацию идентификаторов пользователей, игр и времени уникальными или не позволяет дублировать. При создании новой таблицы не является разрешенным вариант, то вы также можете использовать следующие:

ALTER TABLE A ADD UNIQUE (userid, gameid, time) 

... но вы должны убедиться, что нет никаких дубликатов перед выполнением этого.

Обратите внимание, что в зависимости от того, какие технологии вы используете для отправки запроса SQL, возможно, вам придется обрабатывать ошибки, в которых ваша вставка не будет выполнена из-за присутствия дубликатов.

+0

OH спасибо, что он работает, используя все 3 в качестве первичного – law

0
CREATE table tbl (
USERID int, 
GAMEID int, 
primary key(USERID , GAMEID); 

Я думаю, что вы хотите сделать композит keys..may быть нормально с этим кодом

0

SQL UNIQUE Constraint

  1. ограничение уникальности однозначно идентифицирует каждую запись в таблице базы данных .
  2. Ограничения UNIQUE и PRIMARY KEY обеспечивают гарантию на уникальность для столбца или набора столбцов .
  3. Ограничение PRIMARY KEY автоматически имеет ограничение UNIQUE , определенное на нем.

Обратите внимание, что вы можете иметь много UNIQUE ограничений за столом, но только один PRIMARY KEY ограничение на таблицу

Смежные вопросы