【问题标题】:ERROR 1075: Incorrect table definition; there can be only one auto column and it must be defined as a keyERROR 1075:表定义不正确;只能有一个自动列,并且必须将其定义为键
【发布时间】:2014-03-12 21:32:42
【问题描述】:

我尝试“更改表格” 我需要一个人工智能领域,而不是关键...... “列表”

ID INT(11):PK Not Null AutoIn..
Name VARCHAR
UserID INT(11):FK Not Null
edit BOOL

现在我需要一个字段“sortpos”作为 AI。 我用 MySQL Workbench 试试

ALTER TABLE `**mydb**`.`List` 
ADD COLUMN `sortpos` INT(11) NOT NULL AUTO_INCREMENT AFTER `edit`;

你能帮帮我吗?

谢谢

【问题讨论】:

  • 正如错误所说,它必须是 pkey 的一部分。另见stackoverflow.com/questions/5416548/…
  • 但我需要单独的 sortpos,比如 id,所以自动递增。是否有可能在 sortpos 中克隆 id,默认为示例?
  • 缺少一些解释,为什么需要两个值完全相同的字段?
  • 我还需要一个字段来对输出进行排序,我需要一个唯一的键来切换
  • 我不关注,你已经有一个唯一的密钥,ID。你是什​​么意思“切换”?切换什么?你能发布查询吗?

标签: mysql sql mysql-workbench alter-table


【解决方案1】:

没有比这更好的错误信息了。您的表中已将 ID 定义为 Auto Increment。现在您正在尝试添加另一个字段 sortpos 作为不允许的自动增量。 一张表只能有一个自增,必须定义为主键。

从 alter 语句中删除 AUTO_INCREMENT 并创建一个触发器来增加新列。

【讨论】:

  • 你能帮我创建一些触发器吗:通过将副本 ID 插入到 sortpos
【解决方案2】:

根据您的 cmets,您将用户界面与表数据混淆了。该表只需要一个 ID,如果您愿意,可以创建如下查询:

SELECT ID, ID AS SORTPOS, NAME FROM List

但您甚至不需要查询,您应该只在用户界面级别进行。

另外,您在评论中显示的只是列表的标题,而不是列表本身。

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 2013-07-12
    • 2013-12-17
    • 2019-01-02
    • 2015-04-05
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多