如何创建主键不是自动递增的MySQL

如何创建主键不是自动递增的MySQL,mysql,auto-increment,Mysql,Auto Increment,我正在尝试创建下表: create table Cust (Name varchar(50) UNIQUE, Cat1 varchar(50), RowID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (Name)); 我得到的错误是 表定义不正确;只能有一个自动列,并且它 必须定义为密钥 我想按“名称”而不是RowID编制索引。因此,即使我以以下方式结束: ...PRIMARY KEY (Name, RowID)); 它失败了。当然,…主键(RowID

我正在尝试创建下表:

create table Cust (Name varchar(50) UNIQUE, Cat1 varchar(50), RowID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (Name));
我得到的错误是

表定义不正确;只能有一个自动列,并且它 必须定义为密钥

我想按“名称”而不是RowID编制索引。因此,即使我以以下方式结束:

...PRIMARY KEY (Name, RowID));
它失败了。当然,
…主键(RowID,Name))有效,但不是我想要的

谁能帮我看看灯吗


谢谢

您只需要为auto inc列创建一个键(又称索引)。它不必是主键,但必须是某个索引中最左边的列

create table Cust (
  Name varchar(50), 
  Cat1 varchar(50), 
  RowID int NOT NULL AUTO_INCREMENT, 
  PRIMARY KEY (Name),
  KEY (RowId)
);
不要将“唯一”选项添加到“名称”列。这会创建一个多余的唯一索引,而您不需要它。任何主键都已经是唯一的


我要说的是,汽车公司和rowid不是一回事。不要期望auto inc具有连续的值

您只需要为auto inc列创建一个键(又称索引)。它不必是主键,但必须是某个索引中最左边的列

create table Cust (
  Name varchar(50), 
  Cat1 varchar(50), 
  RowID int NOT NULL AUTO_INCREMENT, 
  PRIMARY KEY (Name),
  KEY (RowId)
);
不要将“唯一”选项添加到“名称”列。这会创建一个多余的唯一索引,而您不需要它。任何主键都已经是唯一的


我要说的是,汽车公司和rowid不是一回事。不要期望auto inc具有连续的值

作为在不同DBs工作的人,我试图理解这个答案。我只是想确定OP的错误本质上是抱怨一个自动增量列需要被索引,而与试图创建一个不包含自动增量的主键无关,对吧?是的,我就是这样解释这个问题的。有点不清楚。发生错误是因为他们试图创建一个列auto inc,即使它不是索引列。作为在不同数据库中工作的人,我试图理解这个答案。我只是想确定OP的错误本质上是抱怨一个自动增量列需要被索引,而与试图创建一个不包含自动增量的主键无关,对吧?是的,我就是这样解释这个问题的。有点不清楚。发生错误是因为他们试图使列自动inc,即使它不是索引列。