【问题标题】:How to drop auto_increment from a mysql table如何从 mysql 表中删除 auto_increment
【发布时间】:2017-10-20 14:25:51
【问题描述】:

这应该是一个非常简单的问题,但我找不到有效的解决方案。

我将日期从 Oracle 迁移到 MYSQL,在此过程中,所有主键都设置为 auto_increment。

但是,有很多已识别的关系(父 PK 与子 PK 相同)。

所以做事务的正确方法是插入到父表中,从这个交互中得到result.insertId,然后在子表中插入相同的值。我知道我可以简单地忽略在插入命令中发送 id 的 auto_increment,但我不想就此放弃。

因为我读到的解决方案说我需要将列更改为完全相同的规范但 auto_increment,所以我运行以下 SQL:

alter table added_object modify column id_interaction_object int(11) not null;

.. 我收到以下消息:

错误 1833 (HY000):无法更改列“id_interaction_object”:已使用 在表的外键约束“FK__METRIC__ADDED_OBJECT”中 “公制”

有什么建议吗?

谢谢

【问题讨论】:

  • 以后,我知道你比我更专业,但那句话应该这样写:ALTER TABLE added_object MODIFY COLUMN id_interaction_object INT(11) NOT NULL;

标签: mysql


【解决方案1】:

您需要禁用外键检查:

SET FOREIGN_KEY_CHECKS=0;

alter table added_object modify column id_interaction_object int(11) not null;

SET FOREIGN_KEY_CHECKS=1;

【讨论】:

  • 谢谢,成功了!在将继续使用 auto_increment 的表中重置 auto_increment 值的最佳方法是什么?
  • @Encoder 你是什么意思?也许是这样:stackoverflow.com/questions/8923114/…
  • 它有效!非常感谢 :) @PaulSpiegel
猜你喜欢
  • 2016-01-11
  • 1970-01-01
  • 2011-03-06
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 2012-10-06
相关资源
最近更新 更多