Snowflake / リリースノート / 2026/07/14 / 重要
SnowflakeのCREATE OR ALTER、24種類のオブジェクトで一般提供
公式リリースノート
SnowflakeのCREATE OR ALTERが24種類のオブジェクト型で一般提供になりました。オブジェクトがなければ作成し、あれば文定義へ合わせて変更します。
要点
- 存在確認と作成/変更の分岐を一つの宣言的文へまとめます。
- 同じスクリプトを安全に再実行したいCI/CDパイプラインで利用できます。
- オブジェクト型ごとの対応属性、破壊的な変更、権限挙動は仕様確認が必要です。
今回の更新で変わること
従来の展開スクリプトでは、オブジェクトが存在するかを調べ、なければCREATE、あれば必要なALTERを組み立てる分岐が必要でした。CREATE OR ALTERは望ましい定義を一つの文で表し、オブジェクトが存在しない時は作成し、存在する時は定義へ合わせて変更します。24オブジェクト型で一般提供になったため、プレビュー前提ではなく、再現可能なインフラ展開へ採用しやすくなりました。
利点は冪等なCI/CDを作りやすいことです。同じSQLを開発、検証環境、本番へ適用し、再実行時にも存在エラーを避けられます。ただし「同じスクリプトを安全に再実行できる」という説明は、すべての変更が非破壊的という意味ではありません。定義から属性を外した時の扱い、名前変更、所有権、権限付与、依存オブジェクト、データを保持する挙動はオブジェクト型ごとに異なる可能性があります。SnowflakeのCREATE OR ALTER <オブジェクト>仕様で対応構文と制約を確認する必要があります。
また宣言的な制御を導入すると、コンソールで行った手作業の変更が次のパイプラインで望ましい状態へ戻される可能性があります。ソース管理を正とし、差分プレビュー、承認、ドライラン相当の検証、ロールバックを設ける必要があります。役割が作成と変更の双方に必要な権限を持つか、管理対象アクセススキーマや所有権の振り替えとどう組み合わさるかもテスト対象です。一般提供は構文の安定性を高めますが、変更管理を不要にするものではありません。対象オブジェクトごとに破壊的変更の有無を確認してから段階展開するのが安全です。変更履歴も残します。また、従来のCREATE文とALTER文を置き換える前に、生成される差分を検証環境で比較する必要があります。
関係する人
Snowflake管理者、Terraform・SQLパイプラインを管理する基盤エンジニア、データベース変更管理担当に関係します。
対応の目安
24オブジェクト型のうち自社対象だけを在庫し、検証環境で作成・変更なし・変更・ロールバックを試します。手作業変更を検出するずれポリシーと本番承認を整えてから置き換えます。