[firebase-br] Criando Trigger

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


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
>




Mais detalhes sobre a lista de discussão lista