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

削除および更新時のINNODBカスケード

    あなたはほんの少しのガイダンスが欲しいようです。簡単に説明します。

    $sql = "CREATE TABLE customerGroups (
       customer_id int(11) NOT NULL,
       group_id int(11) NOT NULL,
       PRIMARY KEY (customer_id, group_id),
       CONSTRAINT customers_customergroups_fk
         FOREIGN KEY (customer_id)
         REFERENCES customers (customer_id) 
         ON DELETE CASCADE,
       CONSTRAINT groups_customergroups_fk
         FOREIGN KEY (group_id)
         REFERENCES groups (group_id) 
         ON DELETE CASCADE
    )ENGINE = INNODB;";
    

    必要なのは IDを特定するのが難しい場合のID番号。人と接するとき、アイデンティティを特定するのは難しいです。 「ジョン・スミス」という名前の人はたくさんいます。

    しかし、あなたはすでに特定されている2つのことを扱っています。 (そして、何よりもID番号で識別されます。)

    カスケード削除は理にかなっています。 ID番号の更新をカスケードすることは比較的まれです。彼らは決して変わらないと推定されています。 (OracleDBAが主キーを常にしなければならないと主張する主な理由 ID番号であり、絶対にしてはいけないこと 変更は、Oracleができないためです。 カスケード更新。)後で、いくつかのID番号が必要 何らかの理由で変更するには、テーブルを変更してONUPDATECASCADEを含めることができます。

    $sql = "CREATE TABLE groups
    (
    group_id int(11) NOT NULL AUTO_INCREMENT,
    group_title varchar(50) NOT NULL UNIQUE,
    group_desc varchar(140),
    PRIMARY KEY (group_id)
    )ENGINE = INNODB;";
    

    group_titleに対する追加の一意の制約に注意してください。データベースでこのようなもの(下記)を許可したくない。

    group_id  group_title
    --
    1         First group
    2         First group
    3         First group
    ...
    9384      First group
    

    これらの種類の変更をすべてのテーブルで実行する必要があります。 (おそらく、顧客のテーブルを除いて。)




    1. Xグループで最大のNレコードを選択する

    2. Milvus:別のマシンでトレーニングと検索

    3. SQLでGROUPBY句を使用する方法

    4. PostgreSQLデータベースの監視:監視対象のヒント