Árvore de páginas

Correção - Erro de violação de chave primária ( Primary Key ) 

Esta build contém uma correção de uma ocorrência de erro que não estava sendo tratada adequadamente pelo DBAccess.
     

 

AbrangênciaERP 10 e 11
Situação

Utilização do DBAccess para acesso as tabelas do ERP Microsiga, ao realizar uma inserção de registro em uma tabela onde foram inseridos mais de 100 registros diretamente na base através de statement de inserção direto ou via stored procedure(s).

Ocorrência

Caso o dbaccess não conseguisse inserir um novo registro na base de dados, após incrementar o contador interno de registros e repetisse a operação por 100 vezes, o DBAccess retornava para a aplicação Advpl a ocorrência de erro fatal de inserção por violação de chave primária.

Correção

O processo interno de numeração de registro do DBAccess foi corrigido para tratar de forma mais assertiva o sincronismo entre o número do ultimo registro da base de dados e o número registrado no acumulador em memória do DBAccess.

Informação adicional
  • Esta ocorrência passou a ser reproduzida nesta build, decorrente de uma mudança de comportamento para optimizar o processo de inserção de registro. Está relacionada exclusivamente ao processo de numeração automática de registro realizado pelo DBAccess.
  • A ocorrência de erro fatal registrada na aplicação Advpl é iniciada pelo texto "DB error (Insert): -37", seguido por uma descrição do erro de violação de chave primária retornada pelo SGDB em uso através do DBACcess. No caso do uso de um MSSQL Server, por exemplo, é retornada a mensagem "DB error (Insert): -37 File: <TABLE>- Error : 2627 (23000) - [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint '<TABLE>_PK'. Cannot insert duplicate key in object 'dbo.<TABLE>'.( SQL Statement : INSERT INTO dbo.RDDT039(<FIELDLIST,...>,D_E_L_E_T_,R_E_C_N_O_) VALUES ( <FIELDVALUES,...>, NNN ) ) ( From tISAMFile::Write )
    "
  • Esta correção está disponível a partir da Build do DBAccess  20130225, com geração e liberação igual ou posterior a 12/07/2013.
  • Sem rótulos