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
