Osvaldo, foi retornado um erro informando que a linguagem plpgsql não
existe! O que faço?

2009/7/3 Osvaldo Kussama <[email protected]>

> 2009/7/3 Leonardo Barbosa <[email protected]>:
> > Salve galera!
> >
> > Tou com a necessidade de criar uma trigger para verificar de a quantidade
> de
> > jogos numa tabela é menor ou igual a 6. Se for maior que 6, o insert não
> > deve ser efetuado.
> >
> > Estou tentando criar a seguinte trigger para realizar essa tarefa:
> >
> > CREATE FUNCTION verifica_6_partidas() RETURNS trigger AS $$
> > BEGIN
> >   SELECT COUNT(*) AS TOTAL_JOGOS_ANDAMENTO FROM "Partida" WHERE "Fim" IS
> > NULL AND ("Jogador1" = NEW.Jogador1 OR "Jogador2" = NEW.Jogador2)
> >   IF ("TOTAL_JOGOS_ANDAMENTO" = 6) THEN
> >      RAISE EXCEPTION 'O jogador possui 6 partidas em andamento. Não foi
> > possível prosseguir esta operação!';
> >   END IF;
> > END;
> > $$ LANGUAGE internal
> >
> > CREATE TRIGGER "trigger_verifica_6_partidas" BEFORE INSERT
> > ON "public"."Partida" FOR EACH STATEMENT
> > EXECUTE PROCEDURE "verifica_6_partidas"();
> >
> > A mensagem de erro que é retornada é a seguinte:
> > ERROR:  there is no built-in function named "
> >   SELECT COUNT(*) AS TOTAL_JOGOS_ANDAMENTO FROM "Partida" WHERE "Fim" IS
> > NULL AND ("Jogador1" = NEW.Jogador1 OR "Jogador2" = NEW.Jogador2)
> >   IF ("TOTAL_JOGOS_ANDAMENTO" = 6) THEN
> >      RAISE EXCEPTION 'O jogador possui 6 partidas em andamento. Não foi
> > possível prosseguir esta operação!';
> >
> > Alguem ai sabe o que pode estar acontecendo? Onde estou errando ?
> >
>
>
> Tente:
>
> CREATE FUNCTION verifica_6_partidas() RETURNS trigger AS $$
> DECLARE
>  TOTAL_JOGOS_ANDAMENTO int;
> BEGIN
>  SELECT COUNT(*) INTO TOTAL_JOGOS_ANDAMENTO FROM "Partida" WHERE
> "Fim" IS NULL AND ("Jogador1" = NEW.Jogador1 OR "Jogador2" =
> NEW.Jogador2);
>  IF ("TOTAL_JOGOS_ANDAMENTO" = 6) THEN
>     RAISE EXCEPTION 'O jogador possui 6 partidas em andamento. Não
> foi possível prosseguir esta operação!';
>  END IF;
> END;
> $$ LANGUAGE plpgsql;
>
> Repare no SELECT...INTO...
>
> http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
> e no ; ao final.
> A variável TOTAL_JOGOS_ANDAMENTO precisa ser declarada, ela tem que
> ser uma variável e não é um alias.
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Atenciosamente,

Leonardo Barbosa
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a