phpmyadmin显示错误:不可能使用两列双增量

0ve6wy6x  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(294)

所以我试着用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”是。该怎么办?

lg40wkob

lg40wkob1#

mysql就是这么说的
每个表只能有一个自动增量列,它必须被索引,并且不能有默认值。只有当自动增量列只包含正值时,它才能正常工作。插入一个负数被认为是插入一个非常大的正数。这样做是为了避免数字从正数“换行”到负数时出现精度问题,还可以确保不会意外地得到包含0的自动增量列。
因此,根据您的要求,您有以下选择。
制造 subCatId 作为 Primary Key 或将列作为 Unique

xyhw6mcr

xyhw6mcr2#

您似乎在使用sql server语法,但运行的是mysql。使用正确的语法,应该可以:

CREATE TABLE category (
    catId INT NOT NULL AUTO_INCREMENT,
    catName VARCHAR(20),
    PRIMARY KEY (catId)
)

CREATE TABLE subcategory (
    subCatId INT NOT NULL AUTO_INCREMENT,
    catId INT,
    subCatName VARCHAR(20),
    FOREIGN KEY (catId) REFERENCES category (catId),
    PRIMARY KEY (subCatId)
);
``` `IDENTITY` 在sql server中大致对应于 `AUTO_INCREMENT` 在mysql中。
r8uurelv

r8uurelv3#

它仅适用于myisam存储引擎,只允许一个数字自动增量值。每个自动增量必须有关联的列,以定义同一表中其他自动增量值的唯一性。
这个参考链接可以帮助你更多地了解这一点。
注意:不要这样做,根本没有第二个自动递增列。您真的需要第二个自动递增的值吗?为何?对你试图解决的实际问题的描述会帮助别人更好地帮助你。我想你只是在这里告诉我你是如何试图解决问题的,而不是真正的问题是什么。

8i9zcol2

8i9zcol24#

你有

Constraint pk_category
PRIMARY KEY(catId)

相反,只要说

PRIMARY KEY(catId)

相关问题