Erro: Informações insuficientes sobre a coluna, de chave para atualização.
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
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
Curtidas 0
Respostas
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.
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
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