MySQL外部キー制約の問題を削除します.


  • テーブルにフィールド制約を追加するとき:
  • ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN KEY(category_id) REFERENCES category(id);
    
  • では、外部キー制約名がproductとみなされます.fk、そして削除したい場合:
  • ALTER TABLE product DROP FOREIGN KEY product_fk;
    
  • では、
  • というエラーが発生します.
    Query: alter table product drop foreign key product_fk
    
    Error Code: 1025
    Error on rename of '.\web_day09\product' to '.\web_day09\#sql2-2330-1' (errno: 152)
    
  • これは、フィールドの外部キー制約名がproduct_ではないためです.fk .
  • データベースでコマンドを実行します:
  • SHOW CREATE TABLE product
    
  • コンソールには、
  • と表示されます.
    Table	Create Table
    product	CREATE TABLE `product` (
      `pid` varchar(32) NOT NULL,
      `pname` varchar(40) DEFAULT NULL,
      `price` double DEFAULT NULL,
      `category_id` varchar(32) DEFAULT NULL,
      PRIMARY KEY (`pid`),
      KEY `category_id` (`category_id`),
      CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`cid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    
  • 表作成文から、外部キー制約名はproduct_であることがわかりました.ibfk_1
  • その後、外部キー削除操作を実行します.
  • Query: alter table product drop foreign key product_ibfk_1
    
    0 row(s) affected
    
  • 削除に成功しました.