Olá,

Você nã consegue abrir uma transação de um bloco PL/pgSQL. O que o
Osvaldo comentou é que derrepente o recurso de savepoint pode ajudar
você. Neste caso você faria como uma transação e não como um bloco PL.

Uma questão. Qual seria o seu problema para você querer executar uma
transação dentro de um bloco PL?

[]s

2009/3/6 mateusgra <[email protected]>:
>
> Agora faça isso dentro da pl_pgsql !
>
>
> JotaComm wrote:
>>
>> Olá,
>>
>> Como assim não funciona?
>>
>> BEGIN;
>> CREATE TABLE foo(foo int);
>> INSERT INTO foo VALUES(1);
>> INSERT INTO foo VALUES(2);
>> INSERT INTO foo VALUES(3);
>> SAVEPOINT meu_ponto_de_salvamento;
>> INSERT INTO foo VALUES(4);
>> INSERT INTO foo VALUES(5);
>> INSERT INTO foo VALUES(6);
>> ROLLBACK TO SAVEPOINT meu_ponto_de_salvamento;
>> COMMIT;
>>
>> Ao fazer SELECT * FROM foo; devem aparecer os registros 1, 2 e 3.
>>
>> []s
>>
>> 2009/3/6 mateusgra <[email protected]>:
>>>
>>> Mas o SAVEPOINT tb não funciona.
>>>
>>>
>>> Osvaldo Kussama wrote:
>>>>
>>>> 2009/3/6 Osvaldo Kussama <[email protected]>:
>>>>> 2009/3/6 mateusgra <[email protected]>:
>>>>>>
>>>>>> Qdo executo um commit dentro de uma função em pl_pgsql gera o seguinte
>>>>>> erro:
>>>>>>
>>>>>> SPI_execute_plan failed executing query "commit":
>>>>>> SPI_ERROR_TRANSACTION
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/Erro-commit-dentro-da-pl_pgsql-tp22371981p22371981.html
>>>>>> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>>>>>>
>>>>>
>>>>>
>>>>> Uma função é executada sempre como uma transação e o PostgreSQL não
>>>>> trabalha, pelo menos por enquanto, com transações aninhadas.
>>>>>
>>>>
>>>>
>>>> Só para complementar (não sei se se aplica a seu caso):
>>>> Existe o recurso SAVEPOINT que permite uma execução seletiva de
>>>> trechos de uma função:
>>>> http://www.postgresql.org/docs/current/interactive/sql-savepoint.html
>>>>
>>>> Osvaldo
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Erro-commit-dentro-da-pl_pgsql-tp22371981p22372515.html
>>> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>
>>
>>
>> --
>> JotaComm
>> http://jotacomm.wordpress.com
>> http://www.dextra.com.br/Postgres
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Erro-commit-dentro-da-pl_pgsql-tp22371981p22372813.html
> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/Postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a