早上好。
我有这个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 :(得分:0)
如果使用SQL定义表,则可以执行以下操作: How to AUTO_INCREMENT in db2?
在DB2中创建表的更多示例: https://www.toadworld.com/platforms/ibmdb2/w/wiki/6854.create-table-examples
答案 1 :(得分:0)
您无法使用DDS创建自动增量。您必须使用SQL DDL。
从应用程序的角度来看,使用DDS创建的文件与使用SQL创建的文件之间没有区别。
除了DDS生成的PF和LF之外,IBM还在Navigator GUI中提供了为任何基于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作为主键。