PostgreSQL 13にPRIMARY KEY制約を設定する方法

環境
Windows10 64bit
PostgreSQL 13.2

書式
CREATE TABLE [ IF NOT EXISTS ] テーブル名 (
カラム名 data_type PRIMARY KEY [, … ]
)
使用例
1.テーブルを作成します

testdb=# create table cft.empl (ename varchar(15) primary key, memo varchar(15));
CREATE TABLE

2.¥d コマンドを使って作成したテーブルのカラムの情報を取得します

testdb=# \d cft.empl
                          テーブル"cft.empl"
  列   |        タイプ         | 照合順序 | Null 値を許容 | デフォルト
-------+-----------------------+----------+---------------+------------
 ename | character varying(15) |          | not null      |
 memo  | character varying(15) |          |               |
インデックス:
    "empl_pkey" PRIMARY KEY, btree (ename)

3.引数に¥d コマンドで表示されたインデックス名を確認します

testdb=# \d cft.empl_pkey
          インデックス"cft.empl_pkey"
  列   |        タイプ         | キー? | 定義
-------+-----------------------+-------+-------
 ename | character varying(15) | はい  | ename
プライマリキー, btree, テーブル"cft.empl"用

4.テストデータをテーブルに挿入します
testdb=# insert into cft.empl values('山崎’, '1100’), ('大阪’, '1101’), ('大橋’, '1102’);
INSERT 0 3

5.既にテーブルに格納されている値と同じ値を指定してデータを追加します
testdb=# insert into cft.empl values('山崎’, '1100’), ('大阪’, '1101’), ('大橋’, '1102’);
ERROR: 重複したキー値は一意性制約"empl_pkey"違反となります
DETAIL: キー (ename)=(山崎) はすでに存在します。

PostgreSQL

Posted by arkgame