Isolamento de Transação - Dúvidas
Preciso criar uma tabela temporária durante uma transação no banco de dados para emissão de um relatório, e somente na transação onde a tabela foi criada é que ela deve estar visível. Como posso fazer isso no FireBird? No Oracle, vc pode criar tabelas dentro do contexto de uma transação, e outras transações não enxergam essa tabela dessa transação aberta. Alguém pode me esclarecer se isso é possível no FireBird?
Grato,
Rubem Rocha
Manaus, AM
Grato,
Rubem Rocha
Manaus, AM
Khundalini
Curtidas 0
Respostas
Gandalf.nho
28/12/2004
O Firebird não possui esse recurso de tabelas temporárias.
GOSTEI 0
Khundalini
28/12/2004
Eu sei que não tem esse recurso, companheiro! Acho que você não entendeu o que eu escrevi!
Como eu sei que o FireBird não tem recurso para criação de tabelas temporárias, pensei em colocar a criação dessa tabela que eu preciso dentro de uma transação, de modo que eu a criaria, alimentaria com dados temporários e, ao terminar a geração do relatório, eu a droparia do banco e desfaria a transação (rollback). Só que eu gostaria de saber se eu posso fazer isso, ou seja, mesmo tendo aberto uma transação essa tabela que eu iria criar (que, a princípio, teria um nome fixo) seria vista por outras transações. Se sim, gostaria de saber qual o nível de isolamento de transação para que o que eu quero fazer aconteça.
[]s
Rubem Rocha
Manaus, AM
Como eu sei que o FireBird não tem recurso para criação de tabelas temporárias, pensei em colocar a criação dessa tabela que eu preciso dentro de uma transação, de modo que eu a criaria, alimentaria com dados temporários e, ao terminar a geração do relatório, eu a droparia do banco e desfaria a transação (rollback). Só que eu gostaria de saber se eu posso fazer isso, ou seja, mesmo tendo aberto uma transação essa tabela que eu iria criar (que, a princípio, teria um nome fixo) seria vista por outras transações. Se sim, gostaria de saber qual o nível de isolamento de transação para que o que eu quero fazer aconteça.
[]s
Rubem Rocha
Manaus, AM
GOSTEI 0
Gandalf.nho
28/12/2004
Acho que não é possível criar uma tabela e preenchê-la com dados sem comitar a transação que a criou.
GOSTEI 0
Khundalini
28/12/2004
Eu acho que é possível no FireBird. Já li alguma coisa sobre isolamento de transações e pelo que li, pode ser que seja possível isso que eu quero fazer. No Oracle eu já vi isso acontecer. Na época, a aplicação (feita em PowerBuilder) gerava os dados em tabelas temporárias, e estas eram enxergadas apenas pela aplicação que iniciou a transação. Após a geração do relatório, essas tabelas preenchidas eram dropadas e a transação desfeita.
Por isso que eu acredito que no FireBird seja possível. Uso D7 + FireBird 1.5 + conexão via dbExpress.
[]s
Rubem Rocha
Manaus, AM
Por isso que eu acredito que no FireBird seja possível. Uso D7 + FireBird 1.5 + conexão via dbExpress.
[]s
Rubem Rocha
Manaus, AM
GOSTEI 0
Edilcimar
28/12/2004
Crie uma tabela e depois de um drop nela, eu utilizo para a criacao um nome tipo T123456 onde o número é tirado do relógio, a possibilidade de duas pessoas criarem uma tabela no mesmo tempo(contando milisegundos) é tão remota que eu a desprezo
GOSTEI 0