mysql不是唯一的自动增量,主键有两个字段

时间:2012-01-01 16:14:45

标签: mysql primary-key unique auto-increment

我想在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 ),ID为auto_increment,但我只想为每个新的唯一区域增加id

这可能吗?

1 个答案:

答案 0 :(得分:3)

你想要的是不可能的。您希望idarea成为主键,但在您的示例中,它们并不是唯一的。

如果您定义表键,则它必须是唯一的,并且在您的示例中,这意味着您需要在主键中包含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`) 
);