Lo del incremental en DDS no lo hemos probado y el tipo de dato que creamos en las tablas para nuestros incrementales es BIGINT en lugar de un INT (por si las moscas).
 
Pero, por si te sirve de ayuda, si no te gusta tener un fichero (o tabla) sin DDS, te puedo decir que nosotros todas las tablas que creamos (incluida información adicional: índices, comentarios, etc.) las escribimos en miembros del iSeries. Los modificamos con LPEX en WebSphere y como tipo les ponemos PLI, que hace que durante la edición te muestre en diferentes colores las constantes, las funciones, etc. Al final lo que hacemos es crear la tabla ejecutando una acción de miembro que realiza un RUNSQLSTM del fuente. En el fuente ponemos también el DROP que comentamos cuando creamos por primera vez la tabla.
 
Saludos.
 
 
 -----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]En nombre de Jordi Parera
Enviado el: jueves, 12 de enero de 2006 18:44 p.m.
Para: [email protected]
Asunto: Campo autoincremental

Hola Foro,

Estoy intentado crear un fichero con un campo autoincremental vía DDS, creo que es imposible, me lo podrían confirmar.

Mediante SQL ningún problema, aunque no me gusta excesivamente tener ficheros sin DDS.

Me he encontrado con una situación como mínimo sorprendente, si creo un fichero vía SQL y posteriormente intento añadir un campo autoincremental con una sentencia de este estilo:

ALTER TABLE Fichero ADD COLUMN campo INT

GENERATED ALWAYS AS IDENTITY

(START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO

CYCLE NO ORDER CACHE 20)

, me lo crea sin ningún problema. Pero si intento hacer lo mismo contra un fichero creado con DDS, sin ningún campo clave me da el siguiente error:

Mensaje . . . . : Sólo se permite una columna ROWID o IDENTITY para la tabla

Fichero de Biblioteca.

Causa . . . . . : La columna "campo" no puede crearse en la tabla "Fichero"

de "Biblioteca" ya que la columna *N ya se ha definido. Puede haber como máximo una

columna IDENTITY y una columna ROWID que estén definidas en una tabla.

Recuperación . : Elimine una de las columnas o bien cambie los atributos de

modo que sólo una columna esté definida como ROWID o como una columna

IDENTITY. Intente de nuevo la petición.

Alguien me podría decir porque o si estoy haciendo algo incorrectamente, muchas gracias a todos por vuestra ayuda.

Responder a