カテゴリ:

システム関数 (システム制御)

SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES

このシステム関数を使用して、既存のテーブルの行タイムスタンプを一括で有効にします。

この関数は、コンテナー内の対象となる既存のテーブルすべてに行タイムスタンプ列を追加し、新しく作成されたテーブルで自動的に行タイムスタンプが有効になるようにします。

関数を正常に実行するには、関数の呼び出し先のコンテナーに対するMODIFY権限が必要です。

行タイムスタンプが有効になると、テーブルはMETADATA$ROW_LAST_COMMIT_TIME列を公開します。これは、各行が最後に変更されたときのタイムスタンプを返します。これにより、行の変更時間に基づいて変更の追跡、インクリメント処理、およびTime Travelクエリが可能になります。詳細については、 行タイムスタンプを使用してパイプラインのレイテンシを測定する をご参照ください。

構文

SELECT SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES('<level>', '<qualified_name>')


- The first argument is level: one of :code:`schema`, :code:`database`, or :code:`account`.
- The second argument is the fully qualified name of the container.
Copy

引数

必須

'level'

コンテナの階層レベル。accountdatabase、:code:`schema`のいずれかになります。

'qualified_name'

コンテナの完全修飾名。例::code:`my_db.myschema`(スキーマレベルの場合)。

次の例は、システム関数を使用して、特定のスキーマ内でサポートされているすべてのテーブルの行タイムスタンプを一括有効にする方法を示しています。この操作では、既存のテーブルに機能が適用されたことを確認するだけでなく、スキーマレベルのデフォルト設定も行います。これにより、今後作成されるすべてのテーブルにMETADATA$ROW_LAST_COMMIT_TIME列が自動的に含まれるようになります。

CREATE OR REPLACE DATABASE my_db;
CREATE OR REPLACE SCHEMA my_schema;
USE DATABASE my_db;
USE SCHEMA my_schema;

CREATE OR REPLACE TABLE my_table (id INT, v STRING);
CREATE OR REPLACE TRANSIENT TABLE my_transient_table (id INT, v STRING);
CREATE OR REPLACE TEMP TABLE my_temp_table (id INT, v STRING);

SELECT SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES(
  'schema',
  'my_db.my_schema'
);

-- System function sets the container default so that new tables will get row timestamp going forward
SHOW PARAMETERS LIKE 'ROW_TIMESTAMP_DEFAULT' IN SCHEMA my_db.my_schema;

INSERT INTO my_table VALUES (1, 'a'), (2, 'b');
INSERT INTO my_transient_table VALUES (10, 'x');
INSERT INTO my_temp_table VALUES (100, 'tmp');

SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_table ORDER BY ID;

SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_transient_table ORDER BY ID;

SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_temp_table ORDER BY ID;
Copy