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

PostgreSQLの複数の列の主キー?

    1つしか存在できません テーブルごとの主キー-「primary」という単語で示されます。
    追加の UNIQUE 列 のように:

    CREATE TABLE test(
       sl_no int PRIMARY KEY,  -- NOT NULL due to PK
       emp_id int UNIQUE NOT NULL,
       emp_name text,
       emp_addr text
    );
    

    PRIMARY KEY(の一部)である列 NOT NULLとマークされています 自動的に。

    または、列制約の代わりにテーブル制約を使用して、単一のマルチカラム 主キー 。これは、上記とは意味的に異なります。現在、組み合わせのみです。 両方の列が一意である必要があり、各列は独自に重複を保持できます。

    CREATE TABLE test(
       sl_no int,     -- NOT NULL due to PK below
       emp_id int ,   -- NOT NULL due to PK below
       emp_name text,
       emp_addr text,
       PRIMARY KEY (sl_no, emp_id)
    );
    

    複数列のUNIQUE 制約も可能です。

    余談:PostgresではCaMeLケース識別子を使用しないでください。二重引用符を使用する必要がないように、有効な小文字の識別子を使用してください。あなたの人生を楽にします。参照:



    1. データベース付きのアプリケーションを出荷する

    2. Delphi DBXおよびMySQL接続の悪夢:DBXエラー:ドライバーを正しく初期化できませんでした

    3. varchar(8000)よりもvarchar(500)の方が有利ですか?

    4. PostgreSQL9.0と9.1の列挙型リテラルの順序の違い