(8.0.29)
-- 1. シーケンス作成
drop table tab1;
create table tab1(col1 int primary key auto_increment)
auto_increment=50;
insert into tab1 values();
select * from tab1;
-- 2. シーケンス値設定
alter table tab1 auto_increment = 100;
※次に取得した値が100になる
-- 3. シーケンス定義確認
analyze table tab1;
select auto_increment from information_schema.tables
where table_schema = 'test'
and table_name = 'tab1';
show table status like 'tab1'\G
show create table tab1;
(19c)
-- 1. シーケンス作成
drop sequence seq1;
create sequence seq1 minvalue 10 start with 50;
select seq1.nextval from dual;
select seq1.currval from dual;
-- 2. シーケンス値設定
alter sequence seq1 restart start with 100;
※次に取得した値が100になる
-- 3. シーケンス定義確認
select sequence_name,min_value,last_number from user_sequences
where sequence_name='SEQ1';
set long 4000000
set longchunksize 4000000
select dbms_metadata.get_ddl('SEQUENCE','SEQ1',USER) from dual;
→ CREATE SEQUENCE文のSTART WITHは取得済みのシーケンス値により変動する
user_sequencesにstart withに相当するカラムがない
(14)
-- 1. シーケンス作成
drop sequence seq1;
create sequence seq1 minvalue 10 start with 50;
select nextval('seq1');
select currval('seq1');
-- 2. シーケンス値設定
alter sequence seq1 restart with 100;
※次に取得した値が100になる
select setval('seq1',100);
※次に取得した値が101になる★
select setval('seq1',100, false);
※次に取得した値が100になる
-- 3. シーケンス定義確認
\x 1
select last_value from seq1;
select schemaname, sequencename, start_value, min_value, last_value
from pg_sequences where sequencename = 'seq1';
pg_dump test --create --format=plain | grep -A 10 seq1
→ CREATE SEQUENCEのSTART WITHはcreate sequenceで設定した50で固定
下記のようなSQL(データ扱い)で実際の初期値が設定される
SELECT pg_catalog.setval('public.seq1', 107, true);
(2019)
-- 1. シーケンス作成
drop sequence seq1;
create sequence seq1 minvalue 10 start with 50;
select next value for seq1;
-- 2. シーケンス値設定
alter sequence seq1 restart with 100;
※次に取得した値が100になる
-- 3. シーケンス定義確認
select name, start_value, minimum_value, current_value, last_used_value
from sys.sequences
where name = 'seq1';
→ CREATE SEQUENCEのSTART WITHはalter sequenceで設定した100で固定