例: UDT基本およびセカンダリ インデックスの例 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

この例のセットは、プライマリ インデックスまたはセカンダリ インデックスまたはその両方にUDT列を指定するテーブルを作成する方法を示します。

最初に、サンプルの列に使用するUDTを定義します。

UDT tbl_integerは、INTEGERデータ型に基づくDISTINCT型UDTです。

     CREATE TYPE tbl_integer AS INTEGER FINAL;

UDT tbl_char50も、CHARACTERデータ型に基づくDISTINCT型UDTです。

     CREATE TYPE tbl_char50 AS CHARACTER(50) FINAL;

EXSP_STRUCTURE_LOBは、INTEGERデータ型およびCLOBデータ型に基づくSTRUCTURED型UDTです。

     CREATE TYPE EXSP_STRUCTURE_LOB AS (
       age INTEGER, 
       c1  CLOB(512), 
       c2  CLOB(512), 
       cnt INTEGER, 
       c3  CLOB(512))
     NOT FINAL
     CONSTRUCTOR METHOD exsp_structure_lob(
       file1 VARCHAR(20), 
       file2 VARCHAR(20),
       file3 VARCHAR(20))
     RETURNS exsp_structure_lob
     SPECIFIC lobconstructor
     SELF AS RESULT
     NO SQL
     PARAMETER STYLE TD_GENERAL
     DETERMINISTIC
     LANGUAGE C;

例の最初のテーブルは、そのUPIをDISTINCT型UDTの列idに定義します。

     CREATE TABLE table_1 (
       id       tbl_integer, 
       emp_name tbl_char50) 
     UNIQUE PRIMARY INDEX(id);

例の2番目のテーブルは、そのNUPIをDISTINCT型UDTの列idに定義します。

     CREATE TABLE table_2 (
       id       tbl_integer, 
       emp_name tbl_char50) 
     PRIMARY INDEX(id);

例の3番目のテーブルは、USIをDISTINCT型UDTの列emp_nameに定義します。

     CREATE TABLE table_3 (
       id       tbl_integer, 
       emp_name tbl_char50) 
     UNIQUE INDEX(emp_name);

例の4番目のテーブルは、NUSIをDISTINCT型UDTの列emp_nameに定義します。

     CREATE TABLE table_4 (
       id         tbl_integer, 
       emp_name   tbl_char50, 
       start_date DATE) 
     INDEX(emp_name);

例の5番目のテーブルは、複合NUSIをDISTINCT型UDTの列emp_nameとDATEの列start_dateに定義します。

     CREATE TABLE table_5 (
       id         tbl_integer, 
       emp_name   tbl_char50, 
       start_date DATE) 
     INDEX(emp_name, start_date);