web-dev-qa-db-ja.com

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"も主キーにしたいです。

14
Meem

テーブルごとに存在できる主キーは1つのみです。それが「プライマリー」という言葉が示唆していることです。

追加の UNIQUE を持つことができます。

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

または、それを単一の multicolumn主キー にするには、列制約の代わりにテーブル制約を使用します。

CREATE TABLE test(
   sl_no int,     -- NOT NULL automatically
   emp_id int ,   -- NOT NULL automatically
   emp_name text,
   emp_addr text,
   PRIMARY KEY (sl_no, emp_id)
);

余談ですが、私のアドバイスは、PostgresでCaMeLケース識別子を使用しないことです。これまで。あなたの人生を楽にします。

36