English|Português|Español
UsuarioContraseñaLogin

INICIO
CONFERENCIAS
INFO
Imagen6326S

Aprendiendo de GeneXus 8.0 RC: Índices Unique

La Release Candidate de GeneXus 8.0 incorpora la posibilidad de definir como 'Unique', índices conformados por uno o más atributos secundarios.

Alcance
Lenguajes:.NET, C/SQL, Visual Basic, Visual FoxPro, Java
DBMSes: DB2 UDB for iSeries, DB2 Universal Database, Informix, Oracle, SQL Server

Descripción

En algunos casos puede haber varios conjuntos de atributos que cumplen las condiciones de una llave primaria. En ese caso decimos que cada conjunto es una llave candidata. Dado que la llave primaria es la que representa la tabla en otras tablas, se debe elegir cual de las llaves candidatas será la llave primaria. 

El concepto de llave candidata -no primaria-se implementa en GeneXus permitiendo la definición de índices de usuario con la característica 'Unique'. Con esta funcionalidad se incrementa la productividad al evitar que el usuario GeneXus tenga que definir e invocar a procedimientos de control de unicidad.

Manejo de  conflictos en tiempo de ejecución

Dada la existencia de índices secundarios 'Unique', se puede tener conflicto de registro duplicado ya no solo en las inserciones de nuevos registros sino también en las actualizaciones, si es que éstas actualizan algun atributo perteneciente a una llave candidata.

 En las transacciones, tanto en insert como en update, ante un conflicto de llave candidata duplicada se desplegará el mensaje "Record already exists" (en el lenguaje correspondiente a la Knowledge Base).

 En los grupos 'New' / 'For Each', ante un conflicto de llave candidata duplicada se ejecutará el código perteneciente al 'When duplicate' si éste existe y sinó directamente no se ejecutará la inserción/actualización.

 Notar que entonces, a partir de esta versión se soporta el comando 'when duplicate' dentro de un grupo 'For Each'.

Manejo de conflictos en  reorganizaciones

Dada la existencia de llaves candidatas, existen nuevos casos de falla de reorganizaciones. GeneXus, en un IA detecta los posibles casos de conflicto y le avisa al usuario en el IAR de los mismos. Por otro lado, en tiempo de ejecución, el primer paso de la reorganización realiza los controles necesarios de forma de evitar que las reorganizaciones cancelen en pasos intermedios. En caso de detectar conflictos le da la posibilidad al usuario de detener la reorganización.

Consideraciones generales

Las llaves candidatas compuestas por varios atributos pueden tener algunos de los atributos que la componen con valor nulo.  Desde el punto de vista de la unicidad, el valor nulo es igual que cualquier otro valor.

Es decir, solamente puede existir un registro con valor nulo en un atributo que forma parte de una llave candidata. El diagrama de navegación de un For Each que tiene condiciones por igual ( '=' ) en todos los atributos de una llave candidata se muestra como For First.

Ejemplos

Algunos ejemplos de uso de las llaves candidatas son:

1- De las personas se tiene, entre otros datos,  un identificador y la cedula de identidad. Para modelar esta realidad se puede definir una transacción con clave primaria Identificador (definido como un autonumerado) y dentro de los atributos secundarios uno para representar la cédula de identidad.  Luego se define un índice de usuario sobre este último que tiene la característica de ser 'Unique'.

Si en un sitio web no se desea que existan varios usuarios (UserId) respondiendo a la misma dirección de correo electrónico (UserMail), uno de los dos debería ser la llave primaria y el otro una candidata.

Relacionado
Aprendiendo de GeneXus 8.0 RC: nuevos datos BLOB
Se liberó GeneXus 8.0 Release Candidate
Aprendiendo de GeneXus 8.0 RC: Índices Unique
De GeneXus 8.0 RC: Tipos de datos estructurados (SDT)
GeneXus Training Uruguay publicó su calendario de capacitación para el primer semestre del año
Certificaciones #GeneXus en el #GX24
En GeneXus Uruguay buscamos nuevos talentos
Trabajar en GeneXus: Todo lo que tienes que saber si quieres trabajar con nosotros #Training #Becas #BolsaDeTrabajo #GXjobs
En GeneXus México buscamos nuevos talentos
Sistema educativo, mercado laboral, empresas B, Forge y GeneXus: la importancia de la capacitación, los valores y la inserción laboral en los jóvenes
Alta demanda de profesionales TI en el mundo
Próximos cursos y certificaciones #GeneXus en América: Argentina, Colombia, Chile, Brasil, México y Uruguay
Nuevos Analistas GeneXus en el Instituto Superior de Informática #Uruguay
Toolnology continúa presentando GeneXus X Evolution 3 con cursos gratuitos #Argentina
#Mayo Próximos cursos y certificaciones #GeneXus en América: Argentina, Brasil, Colombia, México y Uruguay