phpmyadmin显示错误,两列双增量是不可能的



所以我尝试用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-表格定义不正确;只能有一个auto列,并且必须将其定义为键

子类别表中没有两个自动递增的列,只有"subCatId"是。该怎么办?

它仅适用于MyISAM存储引擎只有一个数字允许使用auto_increment值。每个auto_increment必须具有关联列以定义来自其他auto_increment的唯一性值。

此参考链接可能会为您提供更多信息。

注意:不要这样做,根本没有第二个自动递增的列。你真的需要第二个自动递增的值吗?为何A.描述你试图解决的实际问题会有所帮助其他人会更好地帮助你。我想你只是在这里告诉了你是如何尝试的以解决问题,而不是实际问题是什么。

这是MySQL对的状态

每个表只能有一个AUTO_INCREMENT列,它必须索引,并且不能具有DEFAULT值。AUTO_INCREMENT列只有当它只包含正值时才能正常工作。插入负数被认为是插入一个非常大的正数。这样做是为了避免数字从从积极到消极,同时确保你不会意外获取一个包含0的AUTO_INCREMENT列。

因此,根据您的要求,您有以下选择。

  • subCatId设为Primary Key
  • 或者将列设为Unique

您似乎在使用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)
);

SQL Server中的IDENTITY与MySQL中的AUTO_INCREMENT大致对应。

您有

Constraint pk_category
PRIMARY KEY(catId)

相反,只需说

PRIMARY KEY(catId)

最新更新