Erro: Informações insuficientes sobre a coluna, de chave para atualização.

Delphi

08/02/2023

Bom dia,
Estou tentando gravar uma informação em uma tabela do acess mas quando executo o comando post ele me da esta mensagem "Informações insuficientes sobre a coluna, de chave para atualização." eu não estou conseguindo achar o problema pois a mensagem é estranha porque todos os campos da tabela sal tipo "TextoLongo" e não tem nenhuma chave primaria ou índices....

O código é muito simples ele da um edit na adotable insere os valores nos campos e da um post

No post ele me da esta mensagem.

Estou utilizando delphi 10.3, wundows 10 e acess conectado por odbc

Alguem tem ideia do que pode estar errado?

Obrigado a todos
Amauri Alves

Amauri Alves

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

08/02/2023

Como a tabela não possui nenhuma PK ou UK, o banco não tem como garantir que apenas a linha desejada seja alterada.

Imagine que sua tabela possua duas linhas idênticas e você deseja atualizar apenas uma delas. Não há um filtro específico que possa ser utilizado para indicar que a atualização deve atualizar apenas uma delas. Por isso, esta mensagem é uma proteção para evitar que múltiplas linhas sejam atualizadas.

Para fazer uma atualização como essa seria necessário controlar o update, limitando o número de linhas afetadas pelo update ou controlando a alteração pela posição física do registro no banco. Nem todos os bancos oferecem este recurso.
GOSTEI 0
Amauri Alves

Amauri Alves

08/02/2023

Pessoal me desculpem por não colocar o feedback é que com a correria do dia a dia eu acabei me esquecendo, em principio eu não concordei muito com a posição do Arthur Heinrich, uma vez que a tabela não tinha PK porque eu realmente não queria nenhum índice nesta tabela uma vez que ela é somente uma tabela transitória que é zerada todas as vezes que vai ser alimentada e recebe os dados de uma outra tabela que já tem todos os índices que precisamos, mas ele está certo, eu criei um pk e o processo funcionou.
GOSTEI 0
POSTAR