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

PostgreSQLで2つのタイプのテーブルを作成します

    prod_idを作成することはできません table1の主キー 列は2つの複合タイプinfoのみであるため およびmoviePRIMARY KEYでこれらの複合タイプの基本タイプにアクセスすることはできません。 条項。

    あなたがやろうとしていたことは、infoのpk制約で機能します またはmovie
    ただし、それはおそらくあなたが探していたものではなく、この方法では不可能です。

    のようなものを実装できます これで...

    継承

    ここでは、複数の親テーブルから継承できます(タイプの代わりに使用できます)。例:

    CREATE TABLE info (
      prod_id integer
     ,category integer
    );
    
    CREATE TABLE movie (
       title text
      ,actor text
      ,price float
    );
    
    CREATE  TABLE movie_info (
       PRIMARY KEY(prod_id)             -- now we can use the base column!
    )
    INHERITS (info, movie);
    
    INSERT INTO movie_info (prod_id, category, title, actor, price)
    VALUES (1, 2, 'who donnit?', 'James Dean', '15.90');
    
    SELECT * FROM movie_info;
    

    -> SQLfiddle 両方を示しています。

    マニュアルの継承の制限について必ずお読みください。




    1. 単純な集約からスライディング集約へのSQLでのデータ集約の技術

    2. intからのキャスト/変換がアスタリスクを返す理由

    3. 安全な方法でSQLインジェクション攻撃を防ぐ方法

    4. sqldeveloperエラーメッセージ:ネットワークアダプタは接続エラーを確立できませんでした