Trigger dispara as vezes. Como pode?
Fala pessoal, estou com o seguinte problema:
As vezes, minha aplicação quando vou gravar um novo registro ela da o seguinte erro:
violation of PRIMARY or UNIQUE key
Estou usando componentes DBExpress e BD Firebird 1.5 e triggers before update para gerar os meus ids auto incremento junto com os generators.
O que eu estou precebendo é que a trigger não está disparando as vezes e com isso ocorre este erro, pois se eu passar o id como parametro não deixando a trigger gerar o auto incremento pra mim, funciona.
Alguém tem alguma idéia do que possa estas acontecendo na minha aplicação? Será problema de trigger mesmo? Será problema de config dos componentes?
Valew a todos
[color=blue:b66590210a][b:b66590210a]Movido de Delphi para Interbase/Firebird[/b:b66590210a][/color:b66590210a]
As vezes, minha aplicação quando vou gravar um novo registro ela da o seguinte erro:
violation of PRIMARY or UNIQUE key
Estou usando componentes DBExpress e BD Firebird 1.5 e triggers before update para gerar os meus ids auto incremento junto com os generators.
O que eu estou precebendo é que a trigger não está disparando as vezes e com isso ocorre este erro, pois se eu passar o id como parametro não deixando a trigger gerar o auto incremento pra mim, funciona.
Alguém tem alguma idéia do que possa estas acontecendo na minha aplicação? Será problema de trigger mesmo? Será problema de config dos componentes?
Valew a todos
[color=blue:b66590210a][b:b66590210a]Movido de Delphi para Interbase/Firebird[/b:b66590210a][/color:b66590210a]
Seu_madruga
Curtidas 0
Respostas
Michael
03/10/2005
Olá!
O trigger não deveria ser no Before Insert? E qual o código do seu trigger? Pode postá-lo aqui?
[]´s
O trigger não deveria ser no Before Insert? E qual o código do seu trigger? Pode postá-lo aqui?
[]´s
GOSTEI 0
Seu_madruga
03/10/2005
Olá!
O trigger não deveria ser no Before Insert? E qual o código do seu trigger? Pode postá-lo aqui?
[]´s
É isso mesmo, eu coloquei errado. É before insert mesmo.
O código é padrão
new.valor = gen_id(generator,1);
Não tem segredo, a trigger funciona o problema é que as vezes por algum motivo ela não dispara. Eu deduzi isso fazendo meu programa passar como parametro o valor id em vez de esperar a trigger geral pra mim e ela funciona normal.
Mas do jeito que está funciona também mas misteriosamente quando vou inserir um registro em alguns dos cadastro do programa, ele simplesmente não funciona. diz que da violação de chave primario como se a trigger não estivesse sendo disparada e o valor id que está sendo inserido é o antigo.
GOSTEI 0
Beppe
03/10/2005
Ela só dispara quando o registro for levado para o banco, não será de maneira síncrona se usar um componente que faça caching dos dados. Pode contornar recuperando o valor do generator e atribuí-lo no evento OnNewRecord do dataset.
GOSTEI 0
Seu_madruga
03/10/2005
Então será que o Post que eu dou no client antes do ApplyUpdates pode ser o problema?
GOSTEI 0
Beppe
03/10/2005
A propriedade Required do campo chave está como True?
GOSTEI 0
Seu_madruga
03/10/2005
A propriedade Required do campo chave está como True?
Não, está com False. Coloquei justamente porque a Trigger se encarregará de gerar o ID pra mim.
GOSTEI 0