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

mysqlで、カスケードの削除が機能しない場合

    このようにt2を作成すると、正常に機能します:

    CREATE TABLE  `t2` (
      `id` bigint(20) unsigned NOT NULL,
      `data2` text,
      PRIMARY KEY (`id`),
      CONSTRAINT `FK_t2_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    ETA、醜いコードに関する懸念に答えて、以下も機能します:

    CREATE TABLE  t2 (
      id bigint(20) unsigned NOT NULL PRIMARY KEY,
      data2 text,
      CONSTRAINT  FOREIGN KEY (id) REFERENCES t1(id) ON DELETE CASCADE
    ) ENGINE=InnoDB ;
    

    主な違いは、t2.idのデータ型はt1.idのデータ型と一致する必要があり、制約は列の後に宣言する必要があることです。



    1. すべての外部キー制約を一時的に無効にします

    2. Laravel4移行ベーステーブルが見つかりません

    3. Neo4j-Cypherを使用して制約を作成する

    4. OracleStreamsのターゲットスキーマでのテーブルのドロップの防止