【问题标题】:Alter table add primary key not recognised MySQL更改表添加主键无法识别 MySQL
【发布时间】:2020-02-27 06:14:01
【问题描述】:

我正在尝试运行语句ALTER TABLE invoice_partitioned DROP PRIMARY KEY, ADD PRIMARY KEY(invoice_partitioned.id, invoice_partitioned.department_code);

这会在运行时产生语法错误(错误代码 1064)。 MySQL Workbench 突出显示 ADD PRIMARY KEY 后的括号,并显示消息“”(“对于此服务器版本在此位置无效”。

有没有办法解决这个问题?我在 MySQL Community Server 8.0.19

【问题讨论】:

  • 你为什么不做两个陈述。请先删除主键,然后再添加其他语句来添加主键肯定会起作用。

标签: mysql sql primary-key alter


【解决方案1】:

例如,如果我们有一张桌子:

create table invoice_partitioned (id int
                                  , department_code INT
                                  , primary key(ID));

那么就是这样:

ALTER TABLE invoice_partitioned DROP PRIMARY KEY;

ALTER TABLE invoice_partitioned ADD PRIMARY KEY(id, department_code);

Here is a demo

这也可以:

ALTER TABLE invoice_partitioned
DROP PRIMARY KEY,
ADD PRIMARY KEY(id, department_code);

Demo

【讨论】:

  • 谢谢,这行得通。第二版去掉表名就报错了,是什么原因?
  • 我不知道为什么,但我可以假设这是因为您正在更改该表并且无法添加其他表的主键列,所以我猜是不允许的...是的,不客气,乐于助人。
【解决方案2】:

你可以在一个语句中做到这一点

只是不要在列名之前添加表名,如下所示

替换

ALTER TABLE invoice_partitioned DROP PRIMARY KEY, ADD PRIMARY KEY(invoice_partitioned.id, invoice_partitioned.department_code);

到这里

ALTER TABLE invoice_partitioned DROP PRIMARY KEY, ADD PRIMARY KEY (id, department_code);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2016-05-28
    • 2021-11-24
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多