Em 7 de novembro de 2011 14:56, JotaComm <[email protected]> escreveu:

> Olá, Flávio
>
> Em 7 de novembro de 2011 14:39, Flávio Alves Granato <
> [email protected]> escreveu:
>
> Senhores,
>>
>> Estou querendo criar uma trigger para criar uma role assim que inserir
>> um usuário em minha tabela de usuários.
>> Criei ela da seguinte forma:
>>
>> CREATE OR REPLACE FUNCTION usuario_create_trigger() RETURNS trigger AS
>> $$
>> BEGIN
>>
>
> --Troque isso:
>
>>     CREATE ROLE NEW.usuario LOGIN;
>>
>
> --Por isso:
> EXECUTE 'CREATE ROLE '||NEW.nome|| ' LOGIN';
>
>
>     RETURN NEW;
>> END;
>> $$ LANGUAGE 'plpgsql';
>>
>> Mas recebo o seguinte erro:
>>
>> ERRO:  erro de sintaxe em ou próximo a "$1"
>> LINE 1: CREATE ROLE  $1  LOGIN
>>                      ^
>> QUERY:  CREATE ROLE  $1  LOGIN
>> CONTEXT:  SQL statement in PL/PgSQL function "usuario_create_trigger"
>> near line 2
>>
>> ********** Erro **********
>>
>> ERRO: erro de sintaxe em ou próximo a "$1"
>> SQL state: 42601
>> Contexto: SQL statement in PL/PgSQL function "usuario_create_trigger"
>> near line 2
>>
>> Estou cometendo um erro muito simples de sintaxe mas não vejo onde e
>> todo exemplo que acho na internet tem o NEW.algumacoisa e eu não entendo
>> o motivo de dar este erro. Se alguém puder me dar uma luz.
>>
>> Abraços,
>>
>>
>> Flávio
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
> Abraços
> --
> JotaComm
> http://jotacomm.wordpress.com


Flavio,
Faça como o Jota falou e de uma olhada em [1] sobre execução de comandos
dinamicos em pl/pgsql.

[1] http://www.postgresql.org/docs/9.1/static/plpgsql-statements.html

[]s

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

Responder a