Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brshare

Problema com autoincrement no firebird e trigger

Recommended Posts

Ola pessoas como todos sabem o firebird não possui suporte a campos do tipo auto_increment por isso devemos fazer de varias tecnicas para suprir esta falta. Varias sao as sugestões : - criar um generator e uma stored procedure para retornar o valor do generator- criar um generator e um trigger before insert ( mais viavel ), tera o mesmo efeito de um Auto_increment livrando o programador de ficar chamando stored procedures ou gens na programação.optei pela segunda opção por ser mais viavel e seguro em aplicacoes cliente/servidor porem sempre um erro acontece na hora da inserção de registros. Suponho uma tabela clientes que possui os campos cod e nome. O campo cod é auto_increment ( generator + trigger before insert ), tentei com a paleta de conexao DBXPRESS e Zeos porem ambos retornaram erros semelhantes. Os erros são O campo cod e requerido. Varios testes eu fiz e percebi que o trigger não esta sendo ativado e cheguei a conclusao que não e erro no triger nem no generator e sim nas paletas de acesso ou nas minhas configurações das paletas de acesso. pesquisei em varios forums e nada consegui. Alquem ai ja conseguiu e / ou sabe resolver este problema de auto_increment ????????

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se você tirar o Required do Campo COD???PS.: Seria necessário que você postasse a msg de erro aqui para que possamos avaliar melhor o seu problema... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

ja tentei isso tambem mas retorna o erro "field value required"
Esse erro ocorre pq o campo ID não recebe o valor da Trigger...eu passei por esse tipo de erro tbm, resolvi assim:no OnNewRecord da table coloquei o seguinte código
TForm1.Button1Click(Sender: TObject);beginwith dm.qrygeracodigo do  begin	close;	sql.clear;	sql.add('SELECT CAST(GEN_ID(gen_empresas_id,1) AS INTEGER) AS COD FROMRDB$DATABASE');	open;dm.ibtb1.append;dm.ibtb1.FieldByName('CODEMPR').AsInteger:=DM.qrygeracodigo.fieldbyname('COD').asinteger;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.