Con esta funcionalidad se ofrece mayor legibilidad en el
código, integridad en la base de datos y se potencia la programación. En
concreto, en lugar de definir una numeración que depende de la aplicación que lo
llama, el desarrollador se garantiza que no se generen "huecos" en la
numeración, configurando ésta en la base de datos.
Descripción
Cuando una
tabla tiene una clave simple (es decir está compuesta por un solo atributo) y el
tipo de datos es numérico, puede numerarse automáticamente utilizando la
funcionalidad que brindan los manejadores de base de datos con este
fin.
La forma de hacerlo en GeneXus es configurando la
propiedad Autonumber del atributo clave de la tabla. Para esto, es necesario
estar en el modelo de diseño y configurar las propiedades avanzadas del atributo
clave del grupo Autonumber.
Con la propiedad "Enabled" se define la
generación automática de la numeración en la tabla asociada. Esto sólo afecta
las creaciones/reorganizaciones de la base de datos.
Con la propiedad "Star", se configura a
partir de qué número comienza la numeración automática y con la propiedad
"Step"se configura el incremento del campo (entre dos registros).
¿Aplica en claves
compuestas?
No, aplica únicamente cuando
el atributo es, en sí mismo, llave de una tabla. No aplica para claves
compuestas ni atributos secundarios. Por ejemplo, para el caso de la
autonumeración de un segundo nivel se debe utilizar la rule serial o un
procedimiento de numeración.
¿La propiedad es válida en
procedimientos?
Sí, es válida en todos los
objetos que permiten ingreso de datos (transacciones y procedimientos) tanto con
interfase Win como Web. Lo soportan los lenguajes .NET, C/SQL, Visual Basic,
Visual Fox Pro, Java y todos los manejadores de base de datos excepto
dbf.
¿Cómo verificar si la propiedad es tomada en
cuenta?
Como comentábamos la propiedad es
válida en creación, reorganización, por lo tanto en el análisis de impacto de
creación/reorganización se desplegan advertencias (warnings) cuando la propiedad
autonumber es ignorada.
En los casos que se asigna
la propiedad a un campo que no es primary key, el mensaje es AutoNumbe=True
ignored. Attribute %1 is not table %2's primary key.
También advierte si no está implementado en el manejador de base de
datos, en este caso el mensaje es: AutoNumber=True ignored for attribut %1.
Autonumbering is not supported in this DBMS.
¿Cómo obtener el valor de la nueva clave al dar de
alta registros en un procedimiento?
En el
caso de tener una transacción con la siguiente estructura:
AttId*
AttDsc
donde AttId es N(6) y tiene la propiedad autonumber en
True.
y un procedimiento con el código:
new
Attdsc =
&Attdsc
endnew
Para obtener el número clave se debe referenciar el
atributo AttId inmediatamente después del EndNew. Se debe tener en cuenta que
esto puede afectar la navegación del procedimiento.
¿Cómo se implementa?
No todos los DBMS brindan el mismo soporte para poder implementar
esta funcionalidad. La información detallada de la implementación en cada
manejador puede ser útil para el administrador de la Base de Datos, referirse a
las Release
Notes
Ejemplo
Puede obtener un ejemplo en
http://www.gxopen.com.uy/hproject.asp?122