シーケンスの現在値を確認
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+メタコマンドを実行すると、シーケンスの確認はできた。