![]() |
#1 |
Участник
|
Dynamics AXBR: O propósito do campo RecVersion
Источник: http://feedproxy.google.com/~r/daxbr/~3/us87MXZfY78/
============== Greetings, Gostaria de discutir um pouco aqui a funcionalidade do campo RecVersion. Desde que comecei no mundo AX vejo este campo em todas as tabelas, mas nunca me dei conta do seu proposito. O conceito é um tanto simples: Como é de conhecimento de todos, toda tabela criada no AX “ganha” automaticamente o campo “RecVersion”. Este campo é preenchido com o valor “1″ no novo registro criado, e é atualizado para um número aleatório toda vez que fazemos uma seleção do registro para atualização usando a palavra-chave “forUpdate”. Quando o registro é atualizado(usando os métodos update() ou doUpdate()), o kernel irá verificar se o recVersion original daquele registro é o mesmo que consta no banco de dados. Caso seja, significa que o registro não foi modificado por outro processo, e a atualização pode prosseguir. Caso contrário, será lançada uma exception do tipo “UpdateConflict”. Veja o código abaixo: static void Teste_RecVersion(Args _args){ CustTable custTable; ; ttsbegin; select forUpdate custTable where custTable.AccountNum == "00001"; print custTable.orig().recVersion; custTable.CreditMax = 1000; custTable.update(); ttscommit; print custTable.recVersion; pause;} Ao executa-lo, o código irá imprimir o recVersion do registro original (recuperado pelo método orig()) e o novo recVersion criado apos a chamada da instrução “forUpdate”. Usando um exemplo mais claro, vamos imaginar que um processo “A” esteja em execução e seleciona um registro da “CustTable” para atualizar o limite de credito de um cliente: Registro original: AccountNumNameCreditMaxrecVersion00001Cliente para teste5005622. . (processo de calculo do novo limite de crédito) . Após update: AccountNumNameCreditMaxrecVersion00001Cliente para teste100068413 No momento que é feito o “select forUpdate” o Ax criou um novo número de versão do registro, neste caso o número 68413. Ao chamarmos o método de atualização, será verificado se a versão original do registro continua com o número 5622. Caso não esteja, significa que o registro foi selecionado por um processo “B” enquanto o processo “A” estava ainda calculando o novo limite de crédito. Caso isso acontença, será lançado uma exceção do tipo “UpdateConflict”. Caso contrário, a atualização segue normalmente. Espero que tenham gostado. Abs, Anderson Joyle Источник: http://feedproxy.google.com/~r/daxbr/~3/us87MXZfY78/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|