FAQs Curso GeneXus Core (v18)

Autonumerar el segundo nivel de una transacción

Dado que la propiedad Autonumber solo puede aplicarse a claves primarias únicas, para numerar un segundo nivel debe utilizarse la regla Serial.
Esta regla requiere definir un atributo en el primer nivel de la transacción, que guardará el último valor asignado a las líneas del segundo nivel.
Veamos esto con un ejemplo.
Supongamos que tenemos la siguiente transacción de dos niveles, para manejar los países y sus ciudades:


La tabla física generada a partir del segundo nivel de esa transacción es COUNTRYCITY, compuesta por:


Es importante notar que la clave primaria de la tabla generada a partir del segundo nivel es una clave compuesta (por CountryId y CityId).
Al autonumerar CityId, solo estaríamos autonumerando una parte de la clave de la tabla, por lo que GeneXus lanza un Warning especificando esto. 


Por este motivo es que GeneXus provee una alternativa para poder autonumerar un segundo nivel, que es utilizando la regla Serial.
Para eso, coloque la siguiente regla en la transacción Country:

Serial(CityId, CountryCitySerial, 1);  

Siendo CityId el atributo que se desea autonumerar, CountryCitySerial un nuevo atributo numérico del primer nivel de la transacción Country que guarda el último identificador de ciudad ingresado,  y 1 el incremento que se desea entre registro y registro.

Puede acceder a la documentación completa desde el siguiente link:
https://wiki.genexus.com/commwiki/servlet/wiki?6866,Serial%20rule