0

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

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)

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

4

1 回答 1

0

当您创建FOREIGN KEY时,DBMS 也会创建相应的密钥。简而言之,'foreign key' = 'usual key' + 'foreign constraint'. 因此,当您仅删除约束时,您的密钥仍将保留 - 因此,如果您确实需要这样做,您也需要删除它。

为了更好地理解这一点,SHOW INDEXES请在创建外键后在您的表上执行语法 - 然后您会看到您拥有相应的“常用”键。

于 2013-10-16T14:32:00.787 回答