最近接手的乙個專案,需要接入第三方支付。但是第三方要求做乙個電商去包裝一下。開始覺得這包裝乙個電商就是輕鬆+愉快。然後噩夢才剛剛開始,在網上隨便找了乙個開源的電商專案。大刀闊斧的改了一下原始碼,然後順利的跑了起來。然而,在這個時候發現資料庫共有近百張表,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...