删除约束时,会自动创建索引

时间:2013-10-16 14:26:58

标签: mysql sql

我正在尝试从表中删除外键约束。但是,每次删除约束时,似乎都会在之后创建索引。

configtool_access_control约束:

CONSTRAINT FK_configtool_access_control_configtool_app_site_app_site_id FOREIGN KEY (app_site_id)
  REFERENCES configtool_app_site (app_site_id) ON DELETE RESTRICT ON UPDATE RESTRICT

删除声明:

use my_db;

set AUTOCOMMIT=1;

SET FOREIGN_KEY_CHECKS = 0;
flush privileges;

alter table configtool_access_control
  drop FOREIGN KEY FK_configtool_access_control_configtool_app_site_app_site_id;

结果索引在表configtool_access_control中创建:

INDEX FK_configtool_access_control_configtool_app_site_app_site_id (app_site_id)

这是否意味着我必须同时编写索引的删除脚本?有没有办法同时放弃两者?

1 个答案:

答案 0 :(得分:0)

当您创建FOREIGN KEY时,DBMS也会创建相应的密钥。简而言之,'foreign key' = 'usual key' + 'foreign constraint'。所以,当你只删除约束时,你的密钥仍然存在 - 所以如果你真的需要这样做,你也需要丢弃它。

要更好地理解,在创建外键后在表上执行SHOW INDEXES语法 - 然后您将看到您拥有相应的“常用”键。