请考虑以下创建表语法
CREATE TABLE test1 (f1 int primary key, f2 int, unique key(f2));我还可以这样写上面的内容
CREATE TABLE test1 (f1 int primary key, f2 int unique key);为什么我不能对索引做同样的操作?
CREATE TABLE test1 (f1 int primary key, f2 int, index(f2)); -- is valid
CREATE TABLE test1 (f1 int primary key, f2 int index); -- is invalid我知道后者在语法上是错误的,但您能详细说明为什么MySQL选择在列定义中不允许索引吗?虽然对于唯一的键非常好,但是索引会有什么问题呢?
发布于 2019-11-05 17:04:32
为什么我不能对索引做同样的操作?
我猜想,他们只是还没有准备好实现和测试这个语法扩展。对这类定义的支持可以在以后的版本中添加。
IIRC内联索引定义不是任何SQL标准的一部分,而是一些DB引擎为方便而添加的内容,因此,如果您希望保持与一系列数据库后端的兼容性,这可能是停止使用内联索引定义的考虑因素。当然,其他数据库也实现了这种语法( Server在2014年发布版中添加了mySQL支持的和您正在寻找的两种表单,并在2016年进行了一些增强),但可能不是以一种直接兼容的方式实现的。
https://dba.stackexchange.com/questions/252579
复制相似问题