17.10 - CREATE CONSTRAINT構文要素 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)
constraint_name
行レベル セキュリティ制約オブジェクトの名前。テーブル、ビュー、またはインデックスの定義に制約を含める場合は、制約名は列名になります。
制約名はデータベース オブジェクト名のシステム ルールに従う必要があり、以下で一意である必要があります。
  • システムで定義されている制約
  • 制約を含むすべてのテーブルで定義されている列名
データベース オブジェクトの命名については、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
data_type
constraint_nameのデータ型。以下のいずれかになります。
  • SMALLINT

    SMALLINTデータ型は階層(レベル)制約にのみ使用します。

    有効な制約値の範囲は、1から10,000までです。

  • BYTE(n)

    BYTE(n)データ型は、非階層型(カテゴリ)制約にのみ使用します。

    nは、テーブルの行の制約値文字列のバイト数を表わします。nの値を指定しない場合、デフォルト値は1バイトです。nの最大値は32です。

    列に通常含めることができる以上のカテゴリ含めることができるようにするために、システムは自動的に非階層型の各値を固有のビット位置で表わし、テーブルの行に制約列に対して最大256の異なる値を格納できるようにします。

ここで指定するデータ型が、制約を割り当てるどのテーブルでも、関連するシステム作成制約列のデータ型になります。
分類システムおよびセキュリティ制約を設計する際のSMALLINTデータ型およびBYTEデータ型の使用の詳細については、<Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100>を参照してください。
NOT
特定のテーブルの行の制約値をNULLにできません。
NULL
特定のテーブルの行の制約値をNULLにできます。
デフォルト値はNULLです。
VALUES
次の文字列はname:valueペアのセットで、階層(レベル)または非階層(カテゴリ)分類システムのいずれかを定義します。
name:valueペアのセットは、制約の分類のセットを定義します。
name:valueペアの最大数は、制約が階層型(10,000)か非階層型(256)かによって決まります。
name
制約に対して定義されている分類システムのメンバーの名前。
制約の1つ以上の分類名をユーザーまたはプロファイルに割り当てて、制約を含むテーブルでのアクセス権限を定義できます。
value
name:valueペアのnameに対応する値コード。
制約で保護されたテーブルの対応する制約列の行ごとに値コードが表示されます。
名前と値のペア、およびテーブルの行でこの値を決定する方法については、<Teradata Vantage™ - リソース利用マクロおよびテーブル、B035-1099>を参照してください。
DELETE, INSERT, SELECT, UPDATE
制約で強制実行できるSQL操作。
制約定義ごとに1つから4つのSQL操作を指定する必要があります。指定された各SQL操作の後には、操作を実行するSYSLIB.function_nameを付ける必要があります。
1つの制約内で複数のSQL操作タイプを指定することはできません。
SYSLIB.function_name
制約に対して、対応するDELETE、INSERT、SELECT、またはUPDATE操作を強制実行するUDFの名前。
指定したUDFは、制約定義で指定した時点で、SYSLIBデータベース内に含まれている必要があります。
制約のSYSLIB.function_name指定で指定された各UDFは、制約を含んだ表の各行に対して、関連付けられたSQL操作を実行するために必要な最小限の分類を定義します。
行レベル セキュリティ実装の詳細は、<Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100>を参照してください。