[firebase-br] Criando Trigger

Gustavo Moda gustavo.moda em gmail.com
Qui Jun 26 17:18:57 -03 2008


Eita... Overflow.. Eu fico p** com ele.. heheh

Olha so.
Isso ocorre quando:
1) O campo ou variavel esta com um tamanho e vc esta tentando setar
com outro tamanho.
Ex:
     campo_variavel varchar(2);
     campo_variabel = 'Aqui dá o overflow'
2) Você excedeu os limite do tipo de dado. Decimal, smallint,
integer,bigint *(esse vai ser dificil exceder) :D
Veja no manual do firebird quais sao

3) Você fez uma divisao por zero.

Entao, vai na linha 21 e verifica a instrucao que esta dando erro, e
confira os tipos de dados.

Abracos


2008/6/26 Mario Rodrigues <marioirodrigues em gmail.com>:
> Fale Gustavo,
>
> Cara consegui criar bacana...porem quando tento lancar um emprestimo deu o
> seguinte erro:
> Error Message:
> ----------------------------------------
> Overflow occurred during data type conversion.
> conversion error from string "Disponivel".
> At trigger '"TR-ATUALIZA_STATUS"' line: 21, col: 1.
>
> O tipo de dados do campo status é string...qual o problema?
>
> 2008/6/26 Gustavo Moda <gustavo.moda em gmail.com>:
>
>> ja existe essa trigger,
>> use o create or alter trigger
>>
>> Sugestão: De nomes na trigger usando sulfixo e o nome da tabela
>> Ex
>> "TR_TBL_EMPRESTIMO-IUD_A0"
>>
>> p.s. A aspa dupla é necessário pq usei o caractere -
>>
>> Abraço
>>
>>
>>
>> CREATE TRIGGER ATUALIZA_status FOR tbl_emprestimo
>> ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
>> AS
>> begin
>>  IF (INSERTING) THEN
>>    UPDATE tbl_cd
>>    SET tbl_cd.status = 'Emprestado'
>>    WHERE tbl_cd.id_cd = 'Disponivel';
>>  ELSE
>>  IF (DELETING) THEN
>>    UPDATE tbl_cd
>>    SET tbl_cd.status = 'Disponivel'
>>    WHERE tbl_cd.status = 'Emprestado';
>>  ELSE
>> IF (UPDATING) THEN BEGIN
>>    UPDATE tbl_cd
>>    SET tbl_cd.status = 'Disponivel'
>>    WHERE
>>     tbl_cd.status = 'Emprestado';
>>  END
>> end
>>
>> 2008/6/26 Mario Rodrigues <marioirodrigues em gmail.com>:
>> > Salve a todos,
>> >
>> > To iniciando no mundo da programacao...dai o seguinte...to tentando criar
>> > uma trigger q faça o seguinte...tenho um sistema de emprestimo de
>> > cd...tbl_cd com id_cd, descricao e status(bem resumido)..tenho a
>> > tbl_emprestimo onde é relacionada com o cd...blz...a trigger tem q fazer
>> o
>> > seguinte quando eu gravar o emprestimo a trigger muda o status do cd para
>> > 'Emprestado'...dai fiz a seguinte trigger:
>> > CREATE TRIGGER ATUALIZA_status FOR tbl_emprestimo
>> > ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
>> > AS
>> > begin
>> >  IF (INSERTING) THEN
>> >     UPDATE tbl_cd
>> >     SET tbl_cd.status = 'Emprestado'
>> >     WHERE tbl_cd.id_cd = 'Disponivel';
>> >  ELSE
>> >  IF (DELETING) THEN
>> >     UPDATE tbl_cd
>> >     SET tbl_cd.status = 'Disponivel'
>> >     WHERE tbl_cd.status = 'Emprestado';
>> >  ELSE
>> > IF (UPDATING) THEN BEGIN
>> >     UPDATE tbl_cd
>> >     SET tbl_cd.status = 'Disponivel'
>> >     WHERE
>> >      tbl_cd.status = 'Emprestado';
>> >   END
>> > end
>> >
>> > Porem esta dando erro no momento da criação da trigger...esse erro:(uso o
>> FB
>> > 2.0  e o IBExpert)
>> >
>> > This operation is not defined for system tables.
>> > unsuccessful metadata update.
>> > DEFINE TRIGGER failed.
>> > lock conflict on no wait transaction.
>> > attempt to store duplicate value (visible to active transactions) in
>> unique
>> > index "RDB$INDEX_8".
>> >
>> > Alguem poderia me ajudar?
>> > ______________________________________________
>> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> > Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>> >
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista