2016-03-28 64 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作爲一個獨特的自動遞增。

你有什麼想法嗎?

回答

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