2016-03-28 59 views
0

おはようございます。AS400 DB2:DDSおよび自動インクリメントフィールドを持つテーブルを作成します。

私は、このDDSは、ファイル(テーブル)を作成する必要があります。

A*------------------------------------------------------------------------- 
A*  MyTable         
A*------------------------------------------------------------------------- 
A   R AUTDAF06              
A   D06IDUNT  2S 0  TEXT('ID UNIT')      
A   D06DESUN  30A   TEXT('UNIT DESCRIPTION')    
A   D06CDUNT  3A   TEXT('CODE UNIT')     
A*                   
A   D06CRTTI  Z   TEXT('CREATION TIMESTAMP')   
A   D06CRTUS  30A   TEXT('CREATION USER')    
A   D06UPDTI  Z   TEXT('UPDATE TIMESTAMP')    
A          ALWNULL        
A   D06UPDUS  30A   TEXT('UPDATE USER')     
A   D06DELTI  Z   TEXT('DELETE TIMESTAMP')    
A          ALWNULL        
A   D06DELUS  30A   TEXT('DELETE USER')     
A                   
A   K D06IDUNT              
A   K D06DESUN 
A   K D06CDUNT 

私はユニークな自動インクリメントとしてフィールドD06IDUNTを定義したいと思います。

ご存知ですか?あなたは、SQLを使用してテーブルを定義する場合

答えて

0

あなたは、DDSと自動インクリメントを作成することはできません。 SQL DDLを使用する必要があります。

アプリケーションの観点からは、DDSで作成されたファイルとSQLで作成されたファイルの間に違いはありません。

IBMは、Navigator GUI内で、DDSで生成されたPFおよびLFに加えて、SQLベースのオブジェクト用のSQL DDLを生成する機能を提供します。

私は、あなたのDDSを取ったファイルを作成し、検索された次のSQL DDL:エラーメッセージ

CREATE TABLE MYLIB.AUTDAF06 ( 
-- SQL150B 10 REUSEDLT(*NO) in table AUTDAF06 in MYLIB ignored. 
-- SQL1506 30 Key or attribute for AUTDAF06 in MYLIB ignored. 
    D06IDUNT NUMERIC(2, 0) NOT NULL DEFAULT 0 , 
    D06DESUN CHAR(30) CCSID 37 NOT NULL DEFAULT '' , 
    D06CDUNT CHAR(3) CCSID 37 NOT NULL DEFAULT '' , 
    D06CRTTI TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
    D06CRTUS CHAR(30) CCSID 37 NOT NULL DEFAULT '' , 
    D06UPDTI TIMESTAMP DEFAULT NULL , 
    D06UPDUS CHAR(30) CCSID 37 NOT NULL DEFAULT '' , 
    D06DELTI TIMESTAMP DEFAULT NULL , 
    D06DELUS CHAR(30) CCSID 37 NOT NULL DEFAULT '') 

    RCDFMT AUTDAF06 ; 

LABEL ON TABLE MYLIB.AUTDAF06 
    IS 'SO Example' ; 

LABEL ON COLUMN MYLIB.AUTDAF06 
(D06IDUNT TEXT IS 'ID UNIT' , 
    D06DESUN TEXT IS 'UNIT DESCRIPTION' , 
    D06CDUNT TEXT IS 'CODE UNIT' , 
    D06CRTTI TEXT IS 'CREATION TIMESTAMP' , 
    D06CRTUS TEXT IS 'CREATION USER' , 
    D06UPDTI TEXT IS 'UPDATE TIMESTAMP' , 
    D06UPDUS TEXT IS 'UPDATE USER' , 
    D06DELTI TEXT IS 'DELETE TIMESTAMP' , 
    D06DELUS TEXT IS 'DELETE USER') ; 

GRANT DELETE , INSERT , SELECT , UPDATE 
ON MYLIB.AUTDAF06 TO PUBLIC ; 

GRANT ALTER , DELETE , INDEX , INSERT , REFERENCES , SELECT , UPDATE 
ON MYLIB.AUTDAF06 TO MYLIB WITH GRANT OPTION ; 

注:- SQL1506 30キーまたは無視MYLIBでAUTDAF06の属性を。

SQLでは、一意でないキーを持つテーブルはサポートされていません。 DDSのUNIQUEキーワードが指定されていません。あなたの投稿に欠落していると仮定すると、CREATE TABLEの間にSQLを介してD06IDUNT、D06DESUN、D06CDUNTをプライマリキーとして指定することができます。

+0

ありがとうございます。 あなたが言ったように、DDSでそれを行う方法はありません。 SQLだけがそれを行うのに役立ちます。 – Benjamin

関連する問題