加入收藏 | 设为首页 | 会员中心 | 我要投稿 海洋资讯信息网 (https://www.haijunwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何删除mySQL中引用多列的外键

发布时间:2022-10-27 12:46:21 所属栏目:MySql教程 来源:
导读:  如何删除mySQL中引用多列的外键

  mysql

  如何删除mySQL中引用多列的外键,mysql,foreign-keys,Mysql,Foreign Keys,我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起mysql删除表,
  如何删除mySQL中引用多列的外键
 
  mysql
 
  如何删除mySQL中引用多列的外键,mysql,foreign-keys,Mysql,Foreign Keys,我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起mysql删除表,什么也没发生:以下是“显示创建表\u名称”的输出:关键FK_动物指数(动物类型、食物指数),约束FK_动物索引外键(动物类型、食物索引)参考动物种类表(动物种类、食物指数)引擎=InnoDB我已尝试使用以下方法删除此外键:`ALTER TABLE table_name DROP FOREIGN KEY FK_animal_index;``ALTER TABLE table_name DROP FOREIGN
 
  我有一个外键,它引用子表中的两列。我想删除外键,但mySQL只是挂起,什么也没发生:
 
  以下是“显示创建表\u名称”的输出:
 
  关键FK_动物指数(动物类型、食物指数),
 
  约束FK_动物索引外键(动物类型、食物索引)
 
  参考动物种类表(动物种类、食物指数)
 
  引擎=InnoDB
 
  我已尝试使用以下方法删除此外键:
 
  `ALTER TABLE table_name DROP FOREIGN KEY FK_animal_index;`
 
  `ALTER TABLE table_name DROP FOREIGN KEY animal_type;`
 
  ALTER TABLE section\u configuration DROP外键FK\u animal\u index,
 
  下拉键(动物类型、食物索引)
 
  及
 
  ALTER TABLE section\u configuration DROP FOREIGN KEY
 
  FK\u animal\u index
 
 
  ,添加约束FK\u animal\u type FOREIGN KEY(animal\u type)REFERENCES
 
  animal\u schedules
 
 
  (
 
  animal\u type
 
 
  )ON DELETE SET NULL
 
  其他人提到,未设置ON DELETE会阻止您更改键值(如果ON DELETE未设置为任何值,mySQL将拒绝更改)
 
  但是没有用,mySQL只是挂起,30分钟后仍然什么都没有。数据库目前非常小,因此删除FK应该很快。
 
  这个问题的答案根本不是关于主键。
 
  我不得不停止我的程序访问该表,以便对其进行修改。
 
  在mySQL db中,您可以随时添加表和列,但如果要更改列或删除列,任何程序都不能使用它,否则它将无限期挂起。
 
  我猜它正在等待访问表。如果有任何未完成的事务在其他会话中运行,ALTER TABLE必须等待它们完成,然后才能开始对该表执行任何操作。这称为元数据锁。任何查询了该表并未提交其事务的会话都可以无限期地阻止ALTER表。是的,看起来您是正确的。我可以插入、更新和选择记录,但在停止任何程序访问数据库之前,我无法更改表。我停止了我的程序并使用:
 
  ALTER TABLE section_configuration DROP FOREIGN KEY FK_animal_index,ADD CONSTRAINT FK_animal_type外键(animal_type)在DELETE SET NULL上引用animal_schedules(animal_type)成功了。非常感谢Karwin先生
 
 

(编辑:海洋资讯信息网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!