如何删除主键?我得到不正确的表定义

时间:2010-10-12 07:58:14

标签: mysql sql primary-key

我正在尝试运行此查询:

ALTER TABLE table DROP PRIMARY KEY, ADD PRIMARY KEY( `CUSTNO` , `DEPTNO` , `PRODNO` , `DT` );

我得到了

Incorrect table definition; there can be only one auto column and it must be defined as a key

3 个答案:

答案 0 :(得分:4)

你必须改变你的pk列,使其不再具有auto_increment修饰符。

答案 1 :(得分:1)

你必须在3(或4)步骤中完成这项工作:

  1. 从当前主键中删除“auto-incremet”属性
  2. 删除主键
  3. 设置新主键
  4. (将“auto_incremet”重置为您的orl主键列)
  5. 编辑:也许设置一个新的主要不是你真正想要做的。请查看unique indexes - 我认为您希望在其他列上设置它们以确保它们不会出现多次。

答案 2 :(得分:0)

首先,如果我是正确的,你是在定义复合键吗?这通常是不好的做法。最好有一个额外的ID列,并添加一个单独的约束来检查您是否有一个独特的组合。正如codymanix建议的那样,你需要先将列改为不再使用auto_increment然后删除它。