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

複数のテーブルに対する一意の制約

    次のことを試すことができます。 (id, aId)に冗長なUNIQUE制約を作成する必要があります 親で(SQLはかなり馬鹿げていますね!)

    CREATE TABLE Child
    (parentId INTEGER NOT NULL,
     aId INTEGER NOT NULL UNIQUE,
    FOREIGN KEY (parentId,aId) REFERENCES Parent (id,aId),
    createdOn TIMESTAMP NOT NULL);
    

    おそらく、はるかに優れた解決策は、子テーブルからparentIdを完全に削除し、bIdを追加することです。 代わりに、(aId, bId)に基づいて親テーブルを参照するだけです。 :

    CREATE TABLE Child
    (aId INTEGER NOT NULL UNIQUE,
     bId INTEGER NOT NULL,
    FOREIGN KEY (aId,bId) REFERENCES Parent (aId,bId),
    createdOn TIMESTAMP NOT NULL);
    

    それができない理由はありますか?



    1. mysqlの他のテーブルの一致する値に基づいて列を更新します

    2. 特定の状況でこのSQLが結果を返すようにするにはどうすればよいですか?

    3. mysqlの複数行から単一行

    4. CentOS7またはRHEL7からMariaDBまたはMySQLを完全に削除します