所以我试着用phpmyadmin制作以下两张表。
create table category (
catId int identity(1,1),
catName varchar(20),
Constraint pk_category
PRIMARY KEY(catId))
create table subcategory (
subCatId INT IDENTITY(1,1),
catId INT,
subCatName VARCHAR(20),
CONSTRAINT pk_subcategory
PRIMARY KEY(catId,subCatId),
CONSTRAINT fk_subcat_cat
FOREIGN KEY(catID)
REFERENCES category(catId))
创建子类别时,会显示以下查询错误:
1075-表定义不正确;只能有一个自动列,必须将其定义为键。
子类别表中没有两个自动递增的列,只有“subcatid”是。该怎么办?
4条答案
按热度按时间lg40wkob1#
mysql就是这么说的
每个表只能有一个自动增量列,它必须被索引,并且不能有默认值。只有当自动增量列只包含正值时,它才能正常工作。插入一个负数被认为是插入一个非常大的正数。这样做是为了避免数字从正数“换行”到负数时出现精度问题,还可以确保不会意外地得到包含0的自动增量列。
因此,根据您的要求,您有以下选择。
制造
subCatId
作为Primary Key
或将列作为Unique
xyhw6mcr2#
您似乎在使用sql server语法,但运行的是mysql。使用正确的语法,应该可以:
r8uurelv3#
它仅适用于myisam存储引擎,只允许一个数字自动增量值。每个自动增量必须有关联的列,以定义同一表中其他自动增量值的唯一性。
这个参考链接可以帮助你更多地了解这一点。
注意:不要这样做,根本没有第二个自动递增列。您真的需要第二个自动递增的值吗?为何?对你试图解决的实际问题的描述会帮助别人更好地帮助你。我想你只是在这里告诉我你是如何试图解决问题的,而不是真正的问题是什么。
8i9zcol24#
你有
相反,只要说