FAQs Curso
-
Sobre a instalação
-
-
Primeira execução
-
Transações
-
Patterns
-
GeneXus Server
Autonumerar o segundo nível de uma transação
Como a propriedade Autonumber só pode ser aplicada a chaves primárias únicas, para numerar um segundo nível deve ser usada a regra Serial.
Essa regra requer a definição de um atributo no primeiro nível da transação, que salvará o último valor atribuído às linhas do segundo nível.
Vamos ver isso com um exemplo.
Suponha que tenhamos a transação de dois níveis a seguir, para gerenciar os países e suas cidades:
![](https://training.genexus.com/media/images/countrytransaction.png?timestamp=20190531185404)
A tabela física gerada a partir do segundo nível dessa transação é COUNTRYCITY, composta de:
![](https://training.genexus.com/media/images/countrycitytable.png?timestamp=20190531185404)
É importante observar que a chave primária da tabela gerada a partir do segundo nível é uma chave composta (por CountryId e CityId).
Ao autonumerar o CityId, estaríamos apenas autonumerando uma parte da chave da tabela, então GeneXus envia um aviso especificando isso.
![](https://training.genexus.com/media/images/warningautonumberignored.png?timestamp=20190531185404)
Por este motivo, GeneXus oferece uma alternativa para poder autonumerar um segundo nível, que está usando a regra Serial.
Para isso, coloque a seguinte regra na transação Country:
Serial(CityId, CountryCitySerial, 1);
Sendo CityId o atributo que se deseja autonumerar, CountryCitySerial será um novo atributo numérico do primeiro nível da transação Country que armazena o último identificador de cidade inserido e 1 o incremento desejado entre o registro e o registro.
Você pode acessar a documentação completa no seguinte link:
https://wiki.genexus.com/commwiki/servlet/wiki?6866,Serial%20rule
Essa regra requer a definição de um atributo no primeiro nível da transação, que salvará o último valor atribuído às linhas do segundo nível.
Vamos ver isso com um exemplo.
Suponha que tenhamos a transação de dois níveis a seguir, para gerenciar os países e suas cidades:
![](https://training.genexus.com/media/images/countrytransaction.png?timestamp=20190531185404)
A tabela física gerada a partir do segundo nível dessa transação é COUNTRYCITY, composta de:
![](https://training.genexus.com/media/images/countrycitytable.png?timestamp=20190531185404)
É importante observar que a chave primária da tabela gerada a partir do segundo nível é uma chave composta (por CountryId e CityId).
Ao autonumerar o CityId, estaríamos apenas autonumerando uma parte da chave da tabela, então GeneXus envia um aviso especificando isso.
![](https://training.genexus.com/media/images/warningautonumberignored.png?timestamp=20190531185404)
Por este motivo, GeneXus oferece uma alternativa para poder autonumerar um segundo nível, que está usando a regra Serial.
Para isso, coloque a seguinte regra na transação Country:
Serial(CityId, CountryCitySerial, 1);
Sendo CityId o atributo que se deseja autonumerar, CountryCitySerial será um novo atributo numérico do primeiro nível da transação Country que armazena o último identificador de cidade inserido e 1 o incremento desejado entre o registro e o registro.
Você pode acessar a documentação completa no seguinte link:
https://wiki.genexus.com/commwiki/servlet/wiki?6866,Serial%20rule