■ はじめに
小ネタ。 Snowflake の SEQUENCE について扱う
目次
【1】SEQUENCE 【2】SQL文 1)CREATE 文 2)SHOW 文 3)ALTER 文 4)DROP文 【3】Tips 1)バックアップ&所有権付与 【4】使用上の注意 1)シーケンス作成後、初期値変更不可 2)連続した値は保証されない 3)作成後に初期値は変更できない
【1】SEQUENCE
* DB でいうと オートインクリメント(自動採番) の機能 => パフォーマンス的にも高速に使用できる => ただし、とび番になる。(「【3】使用上の注意」参照) => とび番になっても問題ないようであれば、 十分に桁数も設けてあれば使用上問題なさげ
https://docs.snowflake.com/ja/user-guide/querying-sequences
【2】SQL文
1)CREATE文
https://docs.snowflake.com/ja/sql-reference/sql/create-sequence
-- SEQUENCE 作成 CREATE OR REPLACE SEQUENCE seq_01 START = 1 INCREMENT = 1; -- 使い方(<seq_name>.NEXTVAL) SELECT seq_01.nextval;
2)SHOW 文
https://docs.snowflake.com/ja/sql-reference/sql/show-sequences
-- 構文 SHOW SEQUENCES [ LIKE '<pattern>' ] ... -- 使い方 SHOW SEQUENCES;
3)ALTER 文
https://docs.snowflake.com/ja/sql-reference/sql/alter-sequence
ALTER SEQUENCE [ IF EXISTS ] <name> RENAME TO <new_name> ALTER SEQUENCE [ IF EXISTS ] <name> [ SET ] [ INCREMENT [ BY ] [ = ] <sequence_interval> ] ALTER SEQUENCE [ IF EXISTS ] <name> SET COMMENT = '<string_literal>' ALTER SEQUENCE [ IF EXISTS ] <name> UNSET COMMENT -- 初期値の変更はできない(「【3】使用上の注意」の3)参照)
4)DROP文
https://docs.snowflake.com/ja/sql-reference/sql/drop-sequence
DROP SEQUENCE IF EXISTS invoice_sequence_number;
【3】Tips
1)バックアップ&所有権付与
CREATE CLONE で可能
https://docs.snowflake.com/ja/sql-reference/sql/create-clone
-- Backup CREATE OR REPLACE SEQUENCE backup_db.demo_schema.demo_sequence CLONE demo_db.demo_schema.demo_sequence; -- 所有権付与 GRANT OWNERSHIP ON SEQUENCE backup_db.demo_schema.demo_sequence TO ROLE "your_role" COPY CURRENT GRANT;
【4】使用上の注意
https://docs.snowflake.com/ja/sql-reference/sql/create-sequence#usage-notes
1)シーケンス作成後、初期値変更不可
* シーケンスの作成後には、シーケンスの最初/初期値は変更できない => 開発で頻繁に変更する場合、CREATE OR REPLACE が便利かも、、、
2)連続した値は保証されない
生成された数値は一貫して値が増加するが、 必ずしも連続しているとは限りない。
例
1 2 4 <- 3 がなく、4 5 6
3)作成後に初期値は変更できない
https://docs.snowflake.com/ja/sql-reference/sql/alter-sequence#usage-notes
より抜粋 ~~~~~~~~~~~~~~~ シーケンスの作成後には、 シーケンスの最初/初期値は変更できません。 ~~~~~~~~~~~~~~~ => ALTER でも変更できない
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520