Triggers ... Porque esta simples trigger não funciona?

25/09/2004

0

Senhores,

Apesar de trabalhar com bancos de dados a um bom tempo, nunca me deparei com a necessidade de usar triggers, mas agora estou precisando usar uma maldita trigger e mesmo já tendo lido a documentação do postgres essa droga não funciona.
Poderiam, por favor me dizer o que está errado e se possível me dar uma luz na criação de triggers!?

[b:463d222d34]
A função é essa:[/b:463d222d34]
CREATE OR REPLACE FUNCTION public.desce_rotas_apartir(int4)
  RETURNS opaque AS
´
UPDATE gtc_rota
SET ordem=ordem+1
WHERE ordem >= $1;

´
  LANGUAGE ´plpgsql´ VOLATILE;


[b:463d222d34]E a criação da trigger é essa:[/b:463d222d34]
CREATE TRIGGER desce_rotas 
BEFORE INSERT ON gtc_rota 
FOR EACH ROW 
EXECUTE PROCEDURE desce_rotas_apartir(ordem);


A reclamação do PostgreSQL é que a função ´desce_rotas_apartir´ não existe como mostrado abaixo:
ERRO:  função desce_rotas_apartir() não existe


Já estou de cabeça quente e não consigo resolver isso. Resumindo o que eu quero:
A minha tabela tem um formato mais ou menos assim:
ordem endereco
    1        rua a
    2        rua b
    3        rua c
e preciso que ao inserir um novo endereco com a ordem ´2´, por exemplo os endereços 2 e 3 sejam deslocados para baixo, ou seja, se der um
INSERT tabela VALUES (2,"rua d")
eu tenha a minha tabela como segue:
ordem endereco
    1        rua a
[b:463d222d34]    2        rua d[/b:463d222d34]
    3        rua b
    4         rua c

Como vêm o problema é simples e a solução certamente que é tamem, mas como eu nunca usei isso estou errando em algum lugar. Mas onde?


Welington Braga

Welington Braga

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar