16.20 - NONTEMPORAL権限 - Teradata Vantage NewSQL Engine

Teradata Vantage™ テンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1182-162K-JPN

ALTER TABLE文、CREATE TABLE AS文、DELETE、INSERT文およびUPDATE文でNONTEMPORAL接頭辞を使用するには、NONTEMPORAL権限が必要です。

通常、トランザクション時間を含むテーブルに対するクローズ行の変更は禁止されていますが、これらの非テンポラル操作により、クローズ行を変更することができます。たとえば、これらの操作により、トランザクション時間でクローズされた行でもトランザクション時間の列値を直接変更できます。トランザクション時間でクローズされた行を物理的に削除することもできます。通常、クローズ行は変更できません。クローズ行は、過去に実行した行の変更および削除の履歴を提供し、永久にテーブルに保存します。

非テンポラル操作は、トランザクション時間を含むテーブルの通常の処理を迂回する目的に使用できるため、非テンポラル操作の使用はお勧めしません。ただし、ある種のデータベース メンテナンスでは、空き領域の問題から、きわめて古い履歴行をアーカイブしたり削除する必要がある時や、テンポラル テーブルの問題およびデータの破壊を修正するために、非テンポラル操作が必要になる場合があります。

システム レベルで非テンポラル操作を使用可能にするかどうかは、NONTEMPORAL権限と、DBS制御のEnabNonTempoOpの設定で制御されます。デフォルトでは、NONTEMPORAL権限に関係なく、非テンポラル操作は許可されていません。NONTEMPORAL権限を所有するユーザーが非テンポラル操作をできるようにするには、DBS制御ユーティリティを使用します。詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。

使用上の注意

NONTEMPORAL権限はテーブル レベルおよびビュー レベルの権限ですが、データベース レベルあるいはユーザー レベルで付与することもできます。この権限は自動的に付与される権限ではありません。ユーザーDBC、あるいは十分な権限のある他のユーザーにより、明示的に付与される必要があります。

NONTEMPORAL権限は暗黙的に、GRANT OPTION付きでDBCに付与されます。システムが他のユーザーやデータベースに対して、暗黙的にNONTEMPORAL権限を付与することはありません。

NONTEMPORAL権限は、権限の所有者は所有するオブジェクトに権限を付与できる、というシステムの規則に従います。所有者が所有するオブジェクトでNONTEMPORAL修飾子を使用するためには、所有者自体にNONTEMPORAL権限を明示的に付与する必要があるので注意が必要です。

たとえば、ユーザー「john123」がテーブル「MyTemporalTable」を作成し、データベースにログインするとします。このテーブルに対して非テンポラル操作を実行するために、john123は最初に、次に示すリクエストを送信する必要があります。

GRANT NONTEMPORAL ON mytemporaltable TO john123;

権限は「NT」として、DBC.AccessRightsテーブルのAccessRight列に記録されます。

NONTEMPORAL権限の使用は(使用できた場合も、システムにより否認された場合も)、自動的にアクセス ロギング テーブルに記録されます。非テンポラルのロギングには、明示的なBEGIN LOGGING文は必要ありません。また、ロギングを無効にすることはできません。

NONTEMPORAL接頭辞を含む文の場合、システムは文に通常必要な権限に加えて、NONTEMPORAL権限もチェックします。たとえば、NONTEMPORAL DELETEを実行するためには、NONTEMPORAL権限とDELETE権限が必要です。