AS400 DB2:创建一个带有DDS和autoincrement字段的表

AS400 DB2:创建一个带有DDS和autoincrement字段的表,db2,auto-increment,ibm-midrange,Db2,Auto Increment,Ibm Midrange,大家早上好 我使用此DDS创建文件(表): 我想将字段D06IDUNT定义为唯一的自动增量 您知道吗?如果您使用SQL定义表,您可以执行以下操作: 在DB2中创建表的更多示例: 如果使用SQL定义表,则可以执行以下操作: 在DB2中创建表的更多示例: 不能使用DDS创建自动增量。您必须使用SQLDDL 从应用程序的角度来看,用DDS创建的文件和用SQL创建的文件没有区别 IBM在Navigator GUI中提供了为任何基于SQL的对象生成SQL DDL的功能,以及生成PF和LF的DDS 我获

大家早上好

我使用此DDS创建文件(表):

我想将字段D06IDUNT定义为唯一的自动增量


您知道吗?

如果您使用SQL定义表,您可以执行以下操作:

在DB2中创建表的更多示例:

如果使用SQL定义表,则可以执行以下操作:

在DB2中创建表的更多示例:

不能使用DDS创建自动增量。您必须使用SQLDDL

从应用程序的角度来看,用DDS创建的文件和用SQL创建的文件没有区别

IBM在Navigator GUI中提供了为任何基于SQL的对象生成SQL DDL的功能,以及生成PF和LF的DDS

我获取了您的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
关键字。假设您的帖子中没有这个选项,您只需在
创建表期间通过SQL将D06IDUNT、D06DESUN、D06CDUNT指定为主键即可

不能使用DDS创建自动增量。您必须使用SQLDDL

从应用程序的角度来看,用DDS创建的文件和用SQL创建的文件没有区别

IBM在Navigator GUI中提供了为任何基于SQL的对象生成SQL DDL的功能,以及生成PF和LF的DDS

我获取了您的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
关键字。假设您的帖子中没有这个选项,您只需在
创建表期间通过SQL将D06IDUNT、D06DESUN、D06CDUNT指定为主键即可

谢谢你的回复。正如你所说,使用DDS是没有办法做到的。只有SQL帮助我做到这一点。感谢您的回复。正如你所说,使用DDS是没有办法做到的。只有SQL帮助我做到这一点。感谢您的反馈。如上所述,我对DDS解决方案感兴趣。但是没有办法用它来做到这一点。祝你今天愉快。谢谢你的反馈。如上所述,我对DDS解决方案感兴趣。但是没有办法用它来做到这一点。祝您今天过得愉快。