mysql не уникальное автоинкремент, первичный ключ два поля - PullRequest
2 голосов
/ 01 января 2012

Я хочу создать такую ​​структуру таблицы в MySQL:

id  |  area    |  name 
----+----------+------------
1   |  name-1  |  test 
    |          |
1   |  name-1  | value2
    |          |
2   |  name-2  | test-value
    |          | 
3   |  name-3  | test
    |          |
3   |  name-3  | test

т.е.первичный ключ будет: primary_key( id, area ) и идентификатор будет auto_increment, но я хочу, чтобы идентификатор увеличивался только для каждой новой уникальной области

возможно ли это?

1 Ответ

3 голосов
/ 01 января 2012

То, что вы хотите, не возможно. Вы хотите, чтобы id и area были первичными ключами, но в вашем примере они не уникальны.

Если вы определяете ключ таблицы, он должен быть уникальным, и в вашем примере это будет означать, что вам нужно включить name в ваш первичный ключ. Но почему бы не сделать просто id первичным ключом и автоматически увеличить его? Это обычное использование.

РЕДАКТИРОВАТЬ:

Например, вы можете создать дополнительное поле с именем area_id. Вы можете добавить функцию автоинкремента в поле, например:

CREATE  TABLE `areas` 
(
  `id` INT NOT NULL ,
  `area_id` INT NOT NULL AUTO_INCREMENT ,
  `area` VARCHAR(100) NULL ,
  `name` VARCHAR(100) NULL ,
  PRIMARY KEY (`id`) 
);
...