アプリケーション開発の手引き

特殊タイプを使用した、表の定義

特殊タイプの定義が済むと、タイプが特殊タイプである列を持つ表を定義できます。以下に CREATE TABLE の使用例を示します。

例: 売上

たとえば、以下のようにさまざまな国における会社の売上を保持する表を定義したいとします。

     CREATE TABLE US_SALES
       (PRODUCT_ITEM  INTEGER,
        MONTH         INTEGER CHECK (MONTH BETWEEN 1 AND 12),
        YEAR          INTEGER CHECK (YEAR > 1985),
        TOTAL         US_DOLLAR)
      
     CREATE TABLE CANADIAN_SALES
       (PRODUCT_ITEM  INTEGER,
        MONTH         INTEGER CHECK (MONTH BETWEEN 1 AND 12),
        YEAR          INTEGER CHECK (YEAR > 1985),
        TOTAL         CANADIAN_DOLLAR)
     
     CREATE TABLE GERMAN_SALES
       (PRODUCT_ITEM  INTEGER,
        MONTH         INTEGER CHECK (MONTH BETWEEN 1 AND 12),
        YEAR          INTEGER CHECK (YEAR > 1985),
        TOTAL         EURO)

上記の例の特殊タイプは、 例: 通貨中の CREATE DISTINCT TYPE ステートメントと同じものを使用して作成しています。なお、ここでは検査の制約を使用しています。検査制約の詳細については、 SQL 解説書 を参照してください。

例: 応募の書式

たとえば、以下のように応募者が記入した書式を保持する表を定義する必要があるとします。

     CREATE TABLE APPLICATIONS
       (ID                SYSIBM.INTEGER,
        NAME              VARCHAR (30),
        APPLICATION_DATE  SYSIBM.DATE,
        FORM              PERSONAL.APPLICATION_FORM)

特殊タイプ名の修飾子が自分の許可 ID と異なるので、それは完全に修飾されたことになり、省略時の関数パスは変更されていません。なお、タイプおよび関数名が完全には修飾されていない場合、 DB2 は現行の関数パスにリストされているスキーマ全体を検索し、所定の修飾された名前に一致するタイプまたは関数名を探します。 SYSIBM は常に (それが省略されていれば) 現行関数パスにおいて考慮されるので、組み込みデータ・タイプの修飾を省略できます。たとえば、SET CURRENT FUNCTION PATH = cheryl を実行でき、現行関数パスの特殊レジスターの値は "CHERYL""SYSIBM" は含まれません。ここで、CHERYL.INTEGER タイプが定義されていない場合でも、 COL1 のタイプが SYSIBM.INTEGER であると常に SYSIBM が考慮されるので、 CREATE TABLE FOO(COL1 INTEGER) というステートメントは正常に実行されます。

ただし、ご希望であれば、組み込みデータ・タイプを完全に修飾することもできます。現行関数パスの使用に関する詳細については、 SQL 解説書 を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]