Veja não é siomples assim não.

Eu tenho que realizar varios inserts em varias tabelas dentro da mesma 
transação é uma transação que aplica o coceito de master detail, ou 
grava todo mundo ou não grava nada. Por isso que precisa de transação.

seria :

Abre transação
  inclui tab a
  inclui tab b
  inclui tab c
se der erro
  rolback
se não
 commit


isso seria facil em qualque linguagem de programação fora do banco, mas 
no meu caso preciso fazer dentro do banco.

Fabio Telles escreveu:
> A falta de commit e rollback dentro de uma transação é um problema
> delicado no PostgreSQL. Há situações muito específicas onde isso pode
> lhe dar um pouco mais de trabalho. Mas veja, no seu caso, você nem
> precisa contornar muita coisa. Na verdade o seu processo está
> invertido e as transações não são utilizadas para este tipo de
> situação simples.
>
> Faça o seguinte:
>
> - Crie o laço;
> - Para cada linha, faça o teste condicional IF
> - Se o teste for positivo, realize o INSERT
> - Se o teste for negativo, realize outra operação ou até levante uma excessão.
> - Realize a próxima iteração no laço;
>
> []s
> Fábio Telles
>
>
> 2008/1/18, Silfar Goulart de Castro <[EMAIL PROTECTED]>:
>   
>> Eu precisava fazer isso com o PG. Será que é possivel ?
>>
>> CREATE DEFINER = 'root'@'localhost' PROCEDURE `importar`()
>>     NOT DETERMINISTIC
>>     CONTAINS SQL
>>     SQL SECURITY DEFINER
>>     COMMENT ''
>> begin
>>  declare done int default 0;
>>  declare l VARCHAR(500);
>>  DECLARE cur1 CURSOR for select reg from importacao;
>>  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
>>  open cur1;
>> repeat
>>     FETCH cur1 into l;
>>     START TRANSACTION;
>>     insert into aux (reg) VALUES(l);
>>     if SUBSTR(l,4,1) = '9' THEN
>>        commit;
>>        CALL grava_trans;
>>
>>     end if;
>>
>> until done end REPEAT;
>>
>>  close cur1;
>>
>> END;
>>
>>
>> junior Prado escreveu:
>>     
>>> Silfar,
>>>
>>> Corrigindo...
>>>
>>> O postgres não permite commit() e rollback dentro de procedure;
>>> Desculpe a informação errada...
>>>
>>> Att.
>>>
>>> Junior
>>>
>>> 2008/1/18, Silfar Goulart de Castro < [EMAIL PROTECTED]
>>> <mailto:[EMAIL PROTECTED]>>:
>>>
>>>     Junior muito obrigado.
>>>
>>>     Vou começar os testes aqui, mas pelol jeito acho que o postgresql vai
>>>     ser o escolhido.
>>>
>>>     Só mais uma coisa, eu costumo desenvolver com delphi, pegando o
>>>     valor do
>>>     generator antes de gravar, para fazer o master detail, e no fb quando
>>>     agente pega o valor do generator ele já atualiza o valor, tem como
>>>     fazer
>>>     isso no PG tb ?
>>>
>>>
>>>
>>>     junior Prado escreveu:
>>>     > Silfar,
>>>     >
>>>     > O postgres permite commit() e rollback dentro de procedure sim;
>>>     > O auto incremento é usado pelo tipo SERIAL.
>>>     > Conversor de dados http://icewall.org/~hjort
>>>     <http://icewall.org/%7Ehjort>
>>>     > <http://icewall.org/%7Ehjort/conv2pg
>>>     <http://icewall.org/%7Ehjort/conv2pg>>
>>>     >
>>>     >
>>>     > --
>>>     > Valter Cezar Prado Junior
>>>     > Analista TI
>>>     >
>>>     > Sem saber como fazer ele fez!
>>>     >
>>>
>>>       
>> ------------------------------------------------------------------------
>>     
>>>     >
>>>     > _______________________________________________
>>>     > pgbr-geral mailing list
>>>     > [email protected]
>>>     <mailto:[email protected]>
>>>     > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>     >
>>>
>>>     _______________________________________________
>>>     pgbr-geral mailing list
>>>     [email protected]
>>>     <mailto:[email protected]>
>>>     https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>>
>>>
>>> --
>>> Valter Cezar Prado Junior
>>> Analista TI
>>>
>>> Sem saber como fazer ele fez!
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>       
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>     
>
>
>   

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

Responder a