mysql 设置自增必须是主键吗?

2020-12-12 11:46:01 +08:00
 littlepython

早上写了个语句 id 自增但不是主键一直报错 语句:create table student(id INT AUTO_INCREMENT, name VARCHAR(200) NOT NULL) ENGINE=INNODB CHARSET=utf8; 报错是:1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

mysql 版本是 8.0.20-0ubuntu0.20.04.1

网上查询有的说可以 有的不可以,有点迷

2937 次点击
所在节点    程序员
7 条回复
hbolive
2020-12-12 11:49:03 +08:00
错误提示必须是 key,不是 PRIMARY KEY 吧
Xia
2020-12-12 12:23:00 +08:00
什么场景会用到非主键要自增
littlepython
2020-12-12 12:41:24 +08:00
@Xia 只是自己随便写的 发现了这个问题
littlepython
2020-12-12 12:43:05 +08:00
@hbolive 额,要有 key 才能自增?
Renzheng
2020-12-12 12:49:46 +08:00
dorothyREN
2020-12-12 23:05:04 +08:00
pg 就香了,定义个序列,想在哪用就在哪用
neoblackcap
2020-12-13 14:52:40 +08:00
根据以前书上的说法,InnoDB 采取存储为 B 树,那么最好就是用整型的作为主键,自不自增没所谓。
然后哪怕主键是整型,你完全可以定义一个逻辑主键,并使用字符串作为该栏的数据类型。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX