Com essa funcionalidade se oferece maior legibilidade ao
código, integridade na base de dados e se potencia a programação. Concretamente,
em vez de definir uma numeração que depende da aplicação que o chama, o
desenvolvedor se garante que não sejam gerados "ocos" na numeração,
configurando-a na base de dados.
Descrição
Quando uma
tabela tem uma chave simples (quer dizer está composta por um atributo só) e o
tipo de dados é numérico, pode numerar-se automaticamente utilizando a
funcionalidade que oferecem os manipuladores de base de dados com esta
finalidade.
A forma de elaborá-lo com GeneXus é
configurando a propriedade Autonumber do atributo chave da tabela. Para isto, é
necessário estar no modelo de desenho e configurar as propriedades avançadas do
atributo chave do grupo Autonumber.
Com a
propriedade "Enable" se define a geração automática da numeração na tabela
associada. Isto só afeta as criações/reorganizações da base de
dados.
Com a propriedade "Star", configura-se a
partir de quê número começa a numeração automática e com a propriedade "Step"
configura-se o incremento do campo (entre dois registros).
Aplica-se em chaves compostas?
Não, aplica-se unicamente quando o atributo é, em si mesmo, chave
de uma tabela. Não se aplica para chaves compostas nem atributos secundários.
Por exemplo, para o caso da autonumeração de um segundo nível deve-se utilizar a
rule serial ou um procedimento de numeração.
A propriedade é válida em
procedimentos?
Sim, é válida em todos os
objetos que permitem ingresso de dados (transações e procedimentos) tanto com
interface Win como Web. Suporta as linguagens .NET, C/SQL, Visual Basic, Visual
Fox Pro, Java e todos os manipuladores de base de dados exceto
dbf.
Como verificar se a propriedade é levada em
conta?
Como comentávamos a propriedade é válida
em criação, reorganização, portanto na análise de impacto de
criação/reorganização se despreendem advertências (warnings) quando a
propriedade autonumber é ignorada.
Nos casos que se
designa a propriedade a um campo que não é primary key, a mensagem é
AutoNumbe=True ignored. Attribute %1 is not table %2's primary key.
também adverte se não está implementado no
manipulador de base de dados, neste caso a mensagem é: AutoNumber=True ignored
for attribut %1. Autonumbering is not supported in this DBMS.
Como obter o valor da nova chave ao dar de alta registros
num procedimento?
No caso de ter uma transação
com a seguinte estrutura:
AttId*
AttDsc
onde AttId é N(6) e tem a
propriedade autonumber em True.
e um procedimento com o código:
new
Attdsc = &Attdsc
endnew
Para obter o número chave deve-se referenciar o atributo.
AttId imediatamente depois do EndNew. Deve-se levar em conta que isto pode
afetar a navegação do procedimento.
Como se implementa?
Nem
todos os DBMS oferecem o mesmo suporte para poder implementar esta
funcionalidade. A informação detalhada da implementação em cada manipulador pode
ser útil para o administrador da Base de Dados referir-se ->s Release
Notes.
Exemplo
Pode-se obter um
exemplo em
http://www.gxopen.com.uy/hproject.asp?122