首页 > 解决方案 > 如何使用主键而不是自动增量创建 MySQL

问题描述

我正在尝试创建下表:

create table Cust (Name varchar(50) UNIQUE, Cat1 varchar(50), RowID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (Name));

我得到的错误是

表定义不正确;只能有一个自动列,并且必须将其定义为键

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

...PRIMARY KEY (Name, RowID));

它失败。当然...PRIMARY KEY (RowID, Name));可以,但不是我想要的。

有人可以帮我看看灯吗?

谢谢

标签: mysqlauto-increment

解决方案


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

create table Cust (
  Name varchar(50), 
  Cat1 varchar(50), 
  RowID int NOT NULL AUTO_INCREMENT, 
  PRIMARY KEY (Name),
  KEY (RowId)
);

不要将 UNIQUE 选项添加到名称列。这会创建一个多余的唯一索引,您不需要它。任何 PRIMARY KEY 已经是唯一的。

我将评论 auto-inc 与 rowid 不同。不要期望 auto-inc 有连续的值。


推荐阅读