17.05 - column_identity_attributes - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-175K-JPN
Language
日本語 (日本)

識別列は、ANSI SQL:2011に準拠しています。

QITS列は、識別列として定義することもできません。

ALWAYS

識別列の値が常にシステムによって作成されるように指定します。

GENERATED ALWAYS AS IDENTITYとして定義された識別列に値を挿入することはできません。更新することもできません。

BY DEFAULT

識別列の値は、状況に応じてシステムによって生成されるかユーザーによって挿入されます。
  • 識別列にNULLを挿入しようとすると、Vantageは識別列の値を代わりに生成します。
  • 識別列に値を挿入しようとすると、Vantageは指定された値を識別列に挿入します。

例: 識別列と共に定義されたキュー テーブルの作成

この例では、QSNという名前の、キュー順序番号の識別列と共に定義されたキュー テーブルを作成します。テーブルのプライマリ インデックスはQITS列だけに定義された簡単なものなので、これはNUPIとして定義する必要があります。

    CREATE TABLE qtbl_4, QUEUE (
      qits  TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
      qsn   INTEGER GENERATED ALWAYS AS IDENTITY (CYCLE),
      col_3 INTEGER)
    PRIMARY INDEX (qits);

QSNの値は通常の環境では固有であるものとされています。キュー テーブルの行が消費される割合が非常に高く、識別列値のサイクルが完了してQSN値を再利用できるほど十分には、キュー(キューに入れられたイベントにつき1つの表行を使用するものとする)が大きくはならないためです。

例: 制約とUPIを持つキュー テーブルの作成

この例では、行を外部から固有に識別するための制約とUPIとを持つキュー テーブルを作成します。

明確に非固有のQITS列であるcol_1_qitsはテーブルの固有プライマリ インデックスのコンポーネントですが、そのインデックスは複合インデックスであり、その他のコンポーネントには属性NOT NULLおよびUNIQUEがあって、その複合プライマリ インデックスの固有性を保証しています。

    CREATE SET TABLE qtbl_2, QUEUE, NO FALLBACK (
      col_1_qits TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
      col_2      INTEGER NOT NULL UNIQUE,
      col_3      INTEGER, CONSTRAINT check_1 CHECK (col_3 > 0))
    UNIQUE PRIMARY INDEX primary_1 (col_1_qits, col_2);

例: UPIおよびNUSIを持つキューの作成

この例では、UPIがキュー順序番号の識別列QSNに定義され、NUSIがキュー挿入タイムスタンプQITSに定義されたキュー テーブルを作成します。

    CREATE TABLE qtbl_5, QUEUE (
      qits  TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
      qsn   INTEGER GENERATED ALWAYS AS IDENTITY (NO CYCLE),
      col_3 INTEGER)
    UNIQUE PRIMARY INDEX (qsn)
    INDEX qits;

キュー テーブルの行が高い割合で消費される場合は、一般にNO CYCLEオプションをCYCLEで置き換えます。CYCLEには、MAXVALUEを超過しても、実行が失敗しない限り、QSN番号を再利用できるという利点があります。そのようにして、SQNのUPIはいつでもSQNの値が固有であることを保証します。