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

環境
Windows10 64bit
PostgreSQL 13.2

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
testdb=# create table cft.empl (ename varchar(15) primary key, memo varchar(15));
CREATE TABLE
testdb=# create table cft.empl (ename varchar(15) primary key, memo varchar(15)); CREATE TABLE
testdb=# create table cft.empl (ename varchar(15) primary key, memo varchar(15));
CREATE TABLE

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
testdb=# \d cft.empl
テーブル"cft.empl"
| タイプ | 照合順序 | Null 値を許容 | デフォルト
-------+-----------------------+----------+---------------+------------
ename | character varying(15) | | not null |
memo | character varying(15) | | |
インデックス:
"empl_pkey" PRIMARY KEY, btree (ename)
testdb=# \d cft.empl テーブル"cft.empl" 列 | タイプ | 照合順序 | Null 値を許容 | デフォルト -------+-----------------------+----------+---------------+------------ ename | character varying(15) | | not null | memo | character varying(15) | | | インデックス: "empl_pkey" PRIMARY KEY, btree (ename)
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 コマンドで表示されたインデックス名を確認します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
testdb=# \d cft.empl_pkey
インデックス"cft.empl_pkey"
| タイプ | キー? | 定義
-------+-----------------------+-------+-------
ename | character varying(15) | はい | ename
プライマリキー, btree, テーブル"cft.empl"
testdb=# \d cft.empl_pkey インデックス"cft.empl_pkey" 列 | タイプ | キー? | 定義 -------+-----------------------+-------+------- ename | character varying(15) | はい | ename プライマリキー, btree, テーブル"cft.empl"用
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