Saudações a todos! Neste post venho explicar sobre como corrigir o erro de chave(index) inexistente em uma determinada tabela.
Antes de tudo, iremos replicar o erro:
Para solucionarmos o problema, primeiramente devemos ir ao nosso dicionário de tabelas:
Acesse a respectiva tabela que contem essa chave(index)
O primeiro passo para a solução do problema é a validação da tabela propriamente dita
Após validação, refaça o seu procedimento, caso o erro permaneça, verifique se o index foi criado no banco de dados.
Motivo: Quando criamos uma tabela, seus parâmetros de criação são adicionados às tabelas: ATABLE e ATABIND, entre outras, passando para as tabelas sys. somente quando a validação é feita.
Segue exemplo:
Como visto acima, mesmo após a validação, o index ZOPPH01 não foi criado na tabela sys.indexes (tabela onde os indexes são armazenados), provocando assim a mensagem de erro
Solução: Nesse caso, foi notado que ao adicionar o código de atividade, o sistema não gravava o índice da tabela ATABIND na sys.indexes. Portanto foi retirado o código de atividade para fins de teste, o que possibilitou a criação do index na tabela sys.indexes.
Segue exemplo:
Removemos o código de atividade e revalidamos a tabela.
O que resultou na criação do índice ZOPPH_ZOPPH01
Resolvendo assim então, o problema em questão.
SQL's utilizados:
SELECT at.CODFIC_0, ex.CODIND_0, ex.DESCRIPT_0
FROM DOSSIER.ATABLE at inner join DOSSIER.ATABIND ex on at.CODFIC_0 = ex.CODFIC_0
WHERE at.CODFIC_0 = ''TABELA'
select ob.name ,ind.name, *
from sys.objects ob inner join sys.indexes ind on ob.object_id = ind.object_id
where ob.name = 'TABELA'
Agradecimentos ao Reginaldo Marinho pela ajuda na solução deste problema.
Espero ter ajudado! Atenciosamente, João Pedro Fratezi.