Aprendendo com GeneXus 8.0 RC: Índices Unique
A Release Candidate de GeneXus 8.0 incorpora a possibilidade de definir como "Unique", índices compostos por um ou mais atributos secundários.
Alcance
Linguagens:.NET, C/SQL, Visual Basic, Visual FoxPro,
Java
DBMSes: DB2 UDB for iSeries, DB2 Universal Database, Informix, Oracle,
SQL Server
Descripci
ónEn alguns casos pode haver vários conjuntos de atributos que cumprem as condições de uma chave primária. Neste caso dizemos que cada conjunto é uma chave candidata. Dado que a chave primária é a que representa a tabela em outras tabelas, deve-se escolher qual das chaves candidatas será a chave primária.
O conceito de chave candidata -não primária-se implementa em GeneXus permitindo a definição de índices de usário com a característica ' Unique'. Com esta funcionalidade se incrementa a produtividade ao evitar que o usuário GeneXus tenha que definir e invocar procedimentos de controle de unicidade.
Manipulação de conflitos em tempo de execução
Dada a existência de índices
secundários
" Unique",
pode-se ter um conflito de registro duplicado, não só nas
entradas de novos registros, mas também
nas atualizações, se é que estas atualizam algum
atributo pertencente a uma chave candidata.
Nas transações, tanto em insert como em update, diante de um
conflito de chave candidata duplicada, se mostrará a mensagem "Record already exists" ( na
linguagem correspondente -> Knowledge Base).
Nos grupos 'New' / 'For Each',
diante de um conflito de chave candidata duplicada será executado o código pertencente ao " When
duplicate" se este existe, do
contrário diretamente não será
executada a entrada/atualização.
Note então, a partir desta
versão se suporta o comando " when duplicate" dentro de um grupo " For
Each".
Manipulação de conflitos em reorganizações
Dada a existência de chaves candidatas, existem novos casos de falha de reorganizações. GeneXus, num IA detecta os possíveis casos de conflito e avisa ao usuário no IAR dos mesmos. Por outro lado, em tempo de execução, o primeiro passo da reorganização realiza os controles necessários de forma a evitar que as reorganizações cancelem em passos intermediários.
No caso de detectar conflitos, dá ao usuário a possibilidade de deter a reorganização.
Considera
As chaves candidatas compostas por vários atributos podem ter alguns dos atributos que a compõe com valor nulo. Desde o ponto de vista da unicidade, o valor nulo é
igual a qualquer outro valor.Quer dizer, só pode existir um registro com valor nulo em um atributo que forma parte de uma chave candidata. O diagrama de navegação de um For Each que tem condições por igual ( '=' ) em todos os atributos de uma chave candidata se mostra como For First.
Exemplos:
Alguns exemplos do uso de chaves candidatas s
ão:1- Das pessoas se tem, entre outros dados, um identificador e a carteira de identidade.
Para modelar esta realidade, pode-se definir uma transa
ção com chave primária Identificador (definido como um autonumerado) e dentro dos atributos secundários um para representar a carteira de identidade. Depois, se define um índice de usuário sobre este último, que tem a característica de ser ?Unique?.Se num site web não se quer que existam vários usuários (UserId) respondendo ao mesmo endereço de correio eletrônico (UserMail), um dos dois deveria ser a chave primária e o outro uma candidata.