PostgreSQLのシーケンスの動作確認

シーケンスの現在値を確認

SELECT last_value FROM シーケンス名;

100刻みのシーケンスを作成し、適用

-- テスト用テーブル作成
CREATE TABLE sequence_test (
    id smallint,
    temp varchar(100)
);

-- シーケンス作成
CREATE SEQUENCE test_100sequence INCREMENT 100 START 100 CYCLE;

-- シーケンスを利用してデータ挿入
INSERT INTO sequence_test VALUES (nextval('test_100sequence'), 'aiueo');
INSERT INTO sequence_test VALUES (nextval('test_100sequence'), 'kakikukeko');

-- CREATE SEQUENCEで作成したシーケンスをテーブルに紐付ける手順は未確認。
-- テスト用テーブル作成
CREATE TABLE sequence_test (
    id smallint,
    temp varchar(100)
);

-- シーケンスを紐付ける列はNOT NULL制約が必要。
ALTER TABLE sequence_test ALTER COLUMN id SET NOT NULL;

-- NOT NULL制約を確認。
SELECT table_name, constraint_type, constraint_name
FROM information_schema.table_constraints
WHERE table_schema = 'public'
AND table_name = 'sequence_test';

-- シーケンスを追加
ALTER TABLE sequence_test
    ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (INCREMENT 100 START 100 CYCLE);

-- データ挿入
INSERT INTO sequence_test(temp) VALUES ('aiueo');
INSERT INTO sequence_test(temp) VALUES ('kakikukeko');
INSERT INTO sequence_test VALUES (101, 'sashisuseso');

※ 上記手順でシーケンスが作成され、列に紐付けられるが、
情報スキーマを利用してシーケンスの確認ができなかった。
psqlコマンドで\d+メタコマンドを実行すると、シーケンスの確認はできた。

コメント

タイトルとURLをコピーしました