Fórum Trigger dispara as vezes. Como pode? #53143

03/10/2005

0

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]


Seu_madruga

Seu_madruga

Responder

Posts

03/10/2005

Michael

Olá!

O trigger não deveria ser no Before Insert? E qual o código do seu trigger? Pode postá-lo aqui?

[]´s


Responder

Gostei + 0

03/10/2005

Seu_madruga

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.


Responder

Gostei + 0

03/10/2005

Beppe

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.


Responder

Gostei + 0

04/10/2005

Seu_madruga

Então será que o Post que eu dou no client antes do ApplyUpdates pode ser o problema?


Responder

Gostei + 0

04/10/2005

Beppe

A propriedade Required do campo chave está como True?


Responder

Gostei + 0

04/10/2005

Seu_madruga

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar