PostgreSQL の複数の列の主キーは? 質問する

PostgreSQL の複数の列の主キーは? 質問する

PostgreSQL を使用して単一のテーブル内の複数の列に主キーを提供するにはどうすればよいでしょうか?

例:

Create table "Test" 
(
   "SlNo" int not null primary key,
   "EmpID" int not null, /* Want to become primary key */
   "Empname" varchar(50) null,
   "EmpAddress" varchar(50) null
);

"EmpID"注:主キーも作成したいと思います。

ベストアンサー1

そこには1つ PRIMARY KEY制約テーブルごとに(1列以上) - 「プライマリ」という単語で示されます
UNIQUE制約(1 列以上)。

短い構文「列制約」:

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

の列 (の一部) は自動的にPRIMARY KEYマークされます。明示的に制約NOT NULLを追加したい場合もありますNOT NULL。冗長ですが、問題はありません。
UNIQUE制約では、列が明示的にマークされていない限り、null 値が許可されます。NOT NULL参照:

同じことが「テーブル制約」- 複数の列を扱う唯一の構文オプション。複数列 PRIMARY KEY今では、組み合わせ列は一意である必要があり、各列は重複を保持できます。最小限の構文:

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

または、カスタム制約名を使用した完全な構文:

...
, CONSTRAINT test_pkey PRIMARY KEY (sl_no, emp_id)
...

「test_pkey」は、「test」という名前のテーブルのデフォルトの PK 名でもあります。

オプションの追加修飾子がいくつかあります。マニュアルをお読みください。

補足: Postgres では、有効な小文字の識別子を使用してください。そうすれば、二重引用符で囲む必要がありません。参照:

おすすめ記事