mysql 刪除外來鍵關聯 刪除資料庫的外來鍵關聯

2021-10-17 15:57:30 字數 1178 閱讀 7368

最近接手的乙個專案,需要接入第三方支付。但是第三方要求做乙個電商去包裝一下。開始覺得這包裝乙個電商就是輕鬆+愉快。然後噩夢才剛剛開始,在網上隨便找了乙個開源的電商專案。大刀闊斧的改了一下原始碼,然後順利的跑了起來。然而,在這個時候發現資料庫共有近百張表,n張那麼多有主要外來鍵關聯。簡單的舉個例子。我想要刪乙個商品分類,你就會發現分類關聯著品牌,品牌關聯著商品,商品關聯著其它屬性...等等等等等。

所以,我就在想,怎麼能批量的乾掉這些外來鍵關聯呢?

於是乎就掀起了一場我與mysql之間的腥風血雨。

首先,批量查詢並且生成alert語句

select concat('alter table `', table_name, '` drop foreign key `', constraint_name, '`;') as 'drop-fk'

from information_schema.key_column_usage

where table_schema = '表模式名'

and constraint_name like '外鍵名模糊搜尋'

and table_name = '表名';

上面的sql執行完成後,alert語句,全選,複製,執行這些alert語句

alter table `test` drop foreign key `fk4f1d86b91cad6aec`;

alter table `test` drop foreign key `fk4f1d86b92fe2b71b`;

alter table `test` drop foreign key `fk4f1d86b9387d99ac`;

alter table `test` drop foreign key `fk4f1d86b95485c889`;

alter table `test` drop foreign key `fk4f1d86b9664c2b1a`;

alter table `test` drop foreign key `fk4f1d86b9aa7fdcce`;

alter table `test` drop foreign key `fk4f1d86b9f24e3275`;

等待著他執行完成,這樣,跟這張表相關聯的外來鍵就都乾掉了。

由於本人從業沒有多久,對資料庫又並不是很精通,相對又懶。所以只能以這種方式來解除主外來鍵關聯了。如果有大神有更好的方法,可以告訴我,不喜勿噴,個人積累。

MySQL刪除外來鍵

1 刪除表中的外來鍵 語法 alter table tablename drop foreign key foreignkeyname 比如我要刪除account表中user id所引用的外來鍵 先輸入show create table account 檢視建表語言 返回如下資訊 可知外來鍵名為 f...

Mysql刪除外來鍵約束

通常有關聯的兩張表,我們都會進行主外來鍵約束。但是有時候我們可能需要去除主外來鍵約束,下面我會告訴大家怎麼去除主外來鍵約束。note就是外來鍵約束的表 show create table note 執行後會出現類似下面的 這裡的note ibfk 1 note ibfk 2.就是約束的外來鍵名稱。c...

MySQL 刪除外來鍵操作

1.顯現要刪除的外來鍵。show create table 表名 2.看到約束 3.刪除即可。alter table 表名 drop foreign key 約束名 補充 增加主鍵 alter table your table name add primary key your primary ke...