sql >> データベース >  >> RDS >> Mysql

MySQL外部キー制約が消える

    明確にするために、外部キー制約が設定された後のテーブルは次のようになります。

    CREATE TABLE `leerplan_oefenreeks` (
      `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
      `leerplan_id` int(11) NOT NULL,
      `oefenreeks_id` int(11) NOT NULL,
      `plaats` int(11) NOT NULL,
      PRIMARY KEY (`leerplan_oefenreeks_id`),
      KEY `fk_leerp_oefenr_leerplan` (`leerplan_id`),
      KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
      CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE,
      CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
    

    mysqlが自動的に追加するfk_leerp_oefenr_leerplanおよびfk_leerp_oefenr_oefenreeksインデックスに注意してください。

    最初の一意キー制約を追加した後:

    ALTER TABLE leerplan_oefenreeks ADD CONSTRAINT un_leerp_oefenr UNIQUE(leerplan_id, oefenreeks_id);
    

    Mysqlは、leerplan_id列の外部キーチェックをサポートする必要がなくなったため、fk_leerp_oefenr_leerplanインデックスを削除します。この時点で、テーブルは次のようになります。

    CREATE TABLE `leerplan_oefenreeks` (
      `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
      `leerplan_id` int(11) NOT NULL,
      `oefenreeks_id` int(11) NOT NULL,
      `plaats` int(11) NOT NULL,
      PRIMARY KEY (`leerplan_oefenreeks_id`),
      UNIQUE KEY `un_leerp_oefenr` (`leerplan_id`,`oefenreeks_id`),
      KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
      CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE,
      CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
    

    簡単に言うと、Sqlyogは左側のツリービューにインデックスのみを表示します。外部キーを表示する場合は、ツリービューでテーブルを選択し、F10キーを押します。



    1. MYSQL-複数のテーブルを参照する1つの列

    2. DBから配列内のIDを検索するMYSQL

    3. NOT LIKE IN を使用した SQL クエリ

    4. psycopg2のホイールの構築に失敗しました-virtualenvとpipを使用したMacOSX