シーケンス値変更

 

(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で固定