existe a seguinte sentenca?

drop if exists??
me lembro q nas versoes 8.1 se nao me engano para tras nao existia

Em Terça 30 Janeiro 2007 23:16, Daniel Cordeiro escreveu:
> Olá Osvaldo,
>
> Já tinha procurado por execute para ver se criava não a tabela, porque
> quem deve cria-la é o sistema web para recolher os dados da sessão, mas
> as procedures, para que, acabe burlando esta situação (li essa dica em
> algum lugar que não guardei o endereço). Deste modo, eu criaria uma
> procedure que criaria dinamicamente outra procedure em tempo de execução
> e toda vez que fosse solitado. Mas não obtive sucesso. ;(
>
> De qualquer forma, muito obrigado.
>
>
> Daniel Cordeiro
>
> Osvaldo Rosario Kussama escreveu:
> > Daniel Cordeiro escreveu:
> >> Olá Everaldo,
> >>
> >> Obrigado pela ajuda, infelismente não funcionou como eu esperava.
> >>
> >> Eu preciso saber se a tabela da minha sessão foi criado, mas o que
> >> acontece é que a consulta que você me passou vai me mostrar a tabela
> >> temporária de todas as sessões. E não somente a minha.
> >>
> >> Na verdade, o que acontece comigo é que como uso um sistema web com
> >> um número muito alto de requisições, preciso manter minha conexão
> >> persistente. A cada recarregamneto da tela, eu tenho que ver se a
> >> tabela temporária existe (ou caso a conexão tenha se expirado), se
> >> não exisitir, eu a crio e preencho com informações baśicas recolhidas
> >> da sessão do PHP.
> >>
> >> Eu estava fazendo o trabalho sempre removendo e recriando as funções
> >> com o comando DROP IF EXIST, só que eu não sabia que as procedures
> >> quando são executadas na seção, são na verdade COMPILADAS no momento
> >> da sua primeira execução, de tal forma que as informações da tabela
> >> que ele extrai são registrados na procedure através dos OIDS. Como os
> >> OIDS mudam porque eu sempre recriava a tabela temporária, mas a seção
> >> não era expirada, não consequia realizar as operações que desejava
> >> porque dava um erro, pois a procedure procurava os dados em um OID
> >> inexistente.
> >
> > Utilize o EXECUTE para a criação da tabela temporária.
> > http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PL
> >PGSQL-STATEMENTS-EXECUTING-DYN
> >
> > "Unlike all other commands in PL/pgSQL, a command run by an EXECUTE
> > statement is not prepared and saved just once during the life of the
> > session. Instead, the command is prepared each time the statement is
> > run."
> >
> >> Como as vezes eu não sei quando a seção foi expirada, não tem como eu
> >> ficar a cada requisição removendo e recriando a tabela, mas o espaço
> >> ocupado não é meu problema.
> >>
> >>
> >> Muito obrigado pela sua ajuda.
> >>
> >> Daniel Cordeiro
> >>
> >> Evandro Ricardo Silvestre escreveu:
> >>> Daniel,
> >>>
> >>> Tente o seguinte:
> >>>
> >>>  SELECT a.relname AS tabela
> >>>            FROM pg_class a
> >>>           WHERE (a.relkind = 'r') and relnamespace <> 2200
> >>>
> >>> Vai te retornar todas as tabelas temporárias.
> >>>
> >>> Sinceramente, não confio em fazer acesso a tabelas temporárias do
> >>> jeito que deseja fazer! Particularmente prefiro apagar a tabela
> >>> temporária sempre após o uso, para não ocupar espaço!
> >>>
> >>> Att
> >>>
> >>> Evandro
> >>>
> >>> Daniel Cordeiro wrote:
> >>>> Olá a todos mais uma vez,
> >>>>
> >>>> Além do problema das conexões, gostaria de saber como descubro  a
> >>>> tabela temporária que esta ativa na seção corrente, pois gostaria
> >>>> de gravar algumas informações nesta tabela temporária ( carregadas
> >>>> da seção do PHP) para interagir diretamente através de gatilhos e
> >>>> procedures que se baseam nestas informações ( e assim, tirando a
> >>>> necessidade de se passar parâmetros para as procedures).
> >>>>
> >>>> Estou usando PostGreSQL 8.2, e a única  coisa que vi nesta versão é
> >>>> como deletar a tabela com a comando DROP TABLE IF EXISTS.
> >>>>
> >>>> Procurando pelas tabelas do sistema, eu encontrei a tabela com o
> >>>> sequinte comando:
> >>>>
> >>>> =#SELECT schemaname,tablename from pg_tables where tablename =
> >>>> 'teste';
> >>>>
> >>>> O problema é que ela me retorna todas as tabelas temporárias de
> >>>> todas as sessões ativas, da sequinte forma:
> >>>>
> >>>>      schemaname | tablename
> >>>>     ------------+-----------
> >>>>      pg_temp_1  | teste
> >>>>      pg_temp_2  | teste
> >>>>
> >>>>
> >>>> Gostaria de uma forma de descobrir se uma determinada tabela
> >>>> temporária existe na MINHA SESSAO CORRENTE, para que, caso não
> >>>> exista, eu possa cria-la na minha conexão persistente.
> >
> > []s
> > Osvaldo
> >
> >
> > _______________________________________________________ Yahoo! Mail -
> > Sempre a melhor op��o para voc�! Experimente j� e veja as novidades.
> > http://br.yahoo.com/mailbeta/tudonovo/
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil
> > Antes de perguntar consulte o manual
> > http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a