こんにちは、さるまりんです。
DBテーブルの主キーとしてシーケンス(serial)をよく使います。
が、PostgreSQLではUUIDを使うこともできます。
テーブルのCREATE文はこんな感じです。
CREATE TABLE composers (
    id uuid DEFAULT uuid_generate_v4(),
    name varchar(200) not null 
);
実行してみます。
salumarine=# CREATE TABLE composers (
salumarine(#     id uuid DEFAULT uuid_generate_v4(),
salumarine(#     name varchar(200) not null 
salumarine(# );
ERROR:  function uuid_generate_v4() does not exist
LINE 2:     id uuid DEFAULT uuid_generate_v4(),
                            ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
おっとエラーです。
これが出たら
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
を実行します。
salumarine=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION
で、もう一度CREATE TABLEです。
salumarine=# CREATE TABLE composers (
salumarine(#     id uuid DEFAULT uuid_generate_v4(),
salumarine(#     name varchar(200) not null 
salumarine(# );
CREATE TABLE
今度は大丈夫でした。
データを入れてみます。
insert into composers (name)
values ('Beethoven'),
       ('Bach'),
       ('Brahms'),
       ('Mozart'),
       ('Ravel'),
       ('Stravinsky');
実行してみます。
salumarine=# insert into composers (name)
salumarine-# values ('Beethoven'),
salumarine-#        ('Bach'),
salumarine-#        ('Brahms'),
salumarine-#        ('Mozart'),
salumarine-#        ('Ravel'),
salumarine-#        ('Stravinsky');
INSERT 0 6
取り出してみます。
salumarine=# select * from composers;
                  id                  |    name    
--------------------------------------+------------
 d58e6ee7-49db-4c76-aaf3-bf8596a5fd10 | Beethoven
 5b20b254-ae55-4513-8876-ce536014c88c | Bach
 aa5aa08c-ce3a-4337-ae2e-c6f96e65f5b9 | Brahms
 5bbfb696-77f9-4e75-a150-fee7fd2113c0 | Mozart
 da9ffa85-0e41-416d-a6f7-97bacc0977cf | Ravel
 174b394a-cba7-4f35-986f-33b2af717c98 | Stravinsky
(6 rows)
UUIDが自動生成されて登録されています。
これで数値ではなく、UUIDで主キーを作ることもできます。
場面に応じで利用できるといいですね。
読んでくださってありがとうございました。
それではまた!