mysql - 如何使用主键而不是自动增量创建 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));
可以,但不是我想要的。
有人可以帮我看看灯吗?
谢谢
解决方案
您只需要为 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 有连续的值。
推荐阅读
- python - Tkinter 子窗口作为类
- airflow - 遇到 None/Falsy 值时不会引发 Airflow Exception
- java - 有没有什么方法可以使用java selenium点击chrome工具栏中的扩展图标
- python - 一个django项目如何使用多个相同结构的数据库进行读写,通过url区分
- php - mysql语句的php 2条件
- ubuntu - 在单个系统中安装多个替代 vs 代码版本
- reactjs - Highcharts Treemap 无法在 React JS 上正确更新数据
- java - 检查根目录下的文件是否以可移植方式命名
- c++ - C++ 是否保证 std::placeholders::_N 的最小数量?
- node.js - AWS Cloudwatch 警报问题