我正在尝试从表中删除外键约束。但是,每次删除约束时,似乎都会在之后创建索引。
表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)
这是否意味着我必须同时编写索引的删除脚本?有没有办法同时放弃两者?
答案 0 :(得分:0)
当您创建FOREIGN KEY时,DBMS也会创建相应的密钥。简而言之,'foreign key' = 'usual key' + 'foreign constraint'
。所以,当你只删除约束时,你的密钥仍然存在 - 所以如果你真的需要这样做,你也需要丢弃它。
要更好地理解,在创建外键后在表上执行SHOW INDEXES
语法 - 然后您将看到您拥有相应的“常用”键。