mysql非唯一自动递增,主键两个字段
我想在MySQL中创建如下表结构:mysql非唯一自动递增,主键两个字段,mysql,primary-key,unique,auto-increment,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-
id | area | name
----+----------+------------
1 | name-1 | test
| |
1 | name-1 | value2
| |
2 | name-2 | test-value
| |
3 | name-3 | test
| |
3 | name-3 | test
也就是说,主键将是:主键(id,区域)
,id将是自动增量
,但我只希望id为每个新的唯一区域递增
这可能吗?你想要的是不可能的。您希望
id
和area
作为主键,但在您的示例中,它们不是唯一的
如果定义表键,它必须是唯一的,在您的示例中,这意味着您需要在主键中包含name
。但是为什么不把id
作为主键并自动递增呢?这是常见的用法
编辑:
例如,您可以创建一个名为area\u 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`)
);
谢谢,我只能这么做了。我正在考虑另一个解决方案,因为每个区域都必须有自己的id。我想我只需要添加另一个列-区域id。是否可以自动增加新的列区域id,以便每个区域都有一个类似于上面示例中id字段的id?是的,这是可能的。自动递增字段不必是主键。另一种可能是将面积数据存储在一个表中,然后创建另一个引用面积表的表,以确保第一个表中的每个面积只有一个条目。然后您的
id
字段将是唯一的。不幸的是,第二个选项对于我正在设计的系统是不可能的,因为我不知道什么数据将存储在区域表中(它是一个插件架构,因此将由插件本身决定)。那么,我如何才能让自动增量像上面的例子那样工作(即绑定到面积字段)?