Re: [pgbr-geral] Armazenar arquivo XML
2009/12/17 Rodrigo Justina rodrigodellajust...@gmail.com Olá Antônio, Em alguns bancos de dados como Oracle existe o tipo de XML mesmo, até o momento na versão 8.3 a qual está em produção também com o nosso sistema não existe um tipo xml, a nossa solução para a nota fiscal eletrônica - NF-e foi armazenar também em uma tabela juntamente com sua chave o XML em uma coluna TEXT até por motivos de backup e exigência do Fisco se eu não me engano é por 5 anos a permanência desses arquivos. No 8.3 existe sim um tipo XML... veja o seguinte no release notes da 8.3 [1] Support for the SQL/XML standard, including new operators and an XML data type Mais informações sobre o tipo XML podem ser verificadas em [2]. [1] http://www.postgresql.org/docs/8.3/static/release-8-3.html [2] http://www.postgresql.org/docs/8.3/interactive/datatype-xml.html -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenar arquivo XML
Em Qui, 2009-12-17 às 17:13 -0200, Antonio Prado escreveu: Estou trabalhando com NFe e gostaria de armazenar os arquivos xml em uma base de dados PostgreSQL 7.4. Para isto, qual deve ser o tipo do registro? Text? Alguma dica de qual seria a melhor forma de proceder? Estarei armazenando em registro do tipo text, que é o recurso que a versão 7.4 me disponibiliza. Obrigado a todos pela colaboração. Antonio. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Armazenar arquivo XML
2009/12/18 Antonio Prado supo...@antonioprado.eti.br: Em Qui, 2009-12-17 às 17:13 -0200, Antonio Prado escreveu: Estou trabalhando com NFe e gostaria de armazenar os arquivos xml em uma base de dados PostgreSQL 7.4. Para isto, qual deve ser o tipo do registro? Text? Alguma dica de qual seria a melhor forma de proceder? Estarei armazenando em registro do tipo text, que é o recurso que a versão 7.4 me disponibiliza. Por que utilizar uma versão tão antiga (mais de 6 anos) e que terá suporte apenas até Jul/2010 [1]? Osvaldo [1] http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ferramenta para modelagem
Andre Instalei o modelright apresenta o seguinte erro apresentou, 'Database libary not found', to fazendo um conexão remota.Existe a configuração da libpq.Poderia me dar um auxilio na resolução deste problema? Valeu. 2009/12/16 Andre Fernandes fernandes.an...@gmail.com Há algumas bacanas, a de que mais gosto é ModelRight for PostgreSQL (community edition). www.modelright.com Mas há outras também interessantes, mas não me recordo os nomes no momento. Minha dica fica para o ModelRight, tanto a versão gratuita é muito boa, quanto a paga que não é absurdamente cara como muitos concorrentes. Abraços, 2009/12/16 Janderson Matos janderson.ma...@gmail.com Olá PessoALL, Alguém conhece uma ferramenta para modelagem (for Win), que seja free e que se aproxime ao máximo do MySQL Workbench (para quem conhece), ou poderia recomendar uma que tenha uma boa interface gráfica ? Janderson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- André de Camargo Fernandes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Res: Res: Problemas com Procedure no Linux
Olá Eduardo, Antes de mais nada, gostaria de agradecer pela ajuda. Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona, e cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma sintaxe, na procedure, não está executando. Dá justamente o erro indicando a necessidade de uma variável. O caso é que pela sintaxe, a procedure deveria estar criando essa tabela (e fazia isso no windows normalmente, mas agora no linux não tá funcionando). Não estou no trabalho hoje (estou em um dos clientes). Assim que voltar pra casa, retorno com o código da função. Novamente muito obrigado. []'s Marcos Thomaz De: Eduardo Santos eduardo.edusan...@gmail.com Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Quinta-feira, 17 de Dezembro de 2009 17:34:17 Assunto: Re: [pgbr-geral] Res: Problemas com Procedure no Linux Olá Marcos, Esse erro normalmente indica que você esqueceu de declarar a variável tmp_table_tbg_01 no corpo da função. Tem como você colocar todo o código da função? Principalmente o cabeçalho (declare)? 2009/12/17 marcos thomaz marcosthom...@yahoo.com.br Marcelo, antes de mais nada, obrigado pela ajuda. Quanto a versão, de ambos os S.O's é a 8.2.0. A mensagem de erro gerada é essa: ERROR: syntax error at tmp_table_tbg_01 SQL state: 42601 Detail: Expected record variable, row variable, or list of scalar variables following INTO. Context: compile of PL/pgSQL function ajustarptanual near line 15 A linha na procedure onde dá o erro é a seguinte: select coalesce(localidade,26) as localidade, coalesce(categoria,34) as categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from func_valor_arrecadacao( vMes ) group by 1,2,3; O log: 2009-12-17 18:16:47 ERROR: syntax error at tmp_table_tbg_01 2009-12-17 18:16:47 DETAIL: Expected record variable, row variable, or list of scalar variables following INTO. 2009-12-17 18:16:47 CONTEXT: compile of PL/pgSQL function ajustarptanual near line 15 []'s Marcos Thomaz De: Marcelo Costa marcelojsco...@gmail.com Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Quinta-feira, 17 de Dezembro de 2009 16:28:50 Assunto: Re: [pgbr-geral] Problemas com Procedure no Linux Olá 2009/12/17 marcos thomaz marcosthom...@yahoo.com.br Pessoal, tenho um banco de dados que rodava numa máquina com Windows 2003, versão 8.2 do banco de dados. A empresa optou por modificar algumas coisas e substituímos o sistema operacional. Trocamos de Windows 2003 para Linux - Slackware. Mantivemos a versão do banco, porém, depois disso começou a surgir alguns erros em procedures que existiam no banco de dados, todos vinculados a sintaxe do tipo: select coluna1, coluna2, coluna3 into NovaTabela from Tabela Where condição. Esse tipo de instrução está funcionando se eu executar diretamente, mas dentro da procedure está dando erro e o banco não consegue executar essas procedures. Alguém teria alguma idéia? 1. Se você enviar os logs do PostgreSQL e as mensagens de erro da tua procedure certamente te ajudaremos 2. Se vc descrever direitinho a versão do PostgreSQL no windows e a que você utiliza no linux também poderemos te ajudar mais. Blz ? Atte, -- Marcelo Costa www.marcelocosta.net - “You can't always get what want”, Doctor House in apology to Mike Jagger Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Eduardo Santos Analista de Sistemas http://eduardosan.wordpress.com http://twitter.com/eduardosan Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Res: Problemas com Procedure no Linux
2009/12/17 marcos thomaz marcosthom...@yahoo.com.br: ERROR: syntax error at tmp_table_tbg_01 SQL state: 42601 Detail: Expected record variable, row variable, or list of scalar variables following INTO. Context: compile of PL/pgSQL function ajustarptanual near line 15 A linha na procedure onde dá o erro é a seguinte: select coalesce(localidade,26) as localidade, coalesce(categoria,34) as categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from func_valor_arrecadacao( vMes ) group by 1,2,3; Altere para: -- Se a tabela tmp_table_tbg_01 nao existe então crie: CREATE TEMP TABLE tmp_table_tbg_01( localidade TEXT categoriaTEXT refmm TEXT valor TEXT ); -- Senao só altere a linha que deu erro por esta daqui: INSERT INTO tmp_table_tbg_01 SELECT coalesce(localidade,26) , coalesce(categoria,34) , refmm, sum(valor) as valor FROM func_valor_arrecadacao(vMes) GROUP BY 1,2,3; Abraço! -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Res: Res: Problemas com Procedure no Linux
2009/12/18 marcos thomaz marcosthom...@yahoo.com.br: Olá Eduardo, Antes de mais nada, gostaria de agradecer pela ajuda. Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona, e cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma sintaxe, na procedure, não está executando. Dá justamente o erro indicando a necessidade de uma variável. O caso é que pela sintaxe, a procedure deveria estar criando essa tabela (e fazia isso no windows normalmente, mas agora no linux não tá funcionando). Não estou no trabalho hoje (estou em um dos clientes). Assim que voltar pra casa, retorno com o código da função. De acordo com o manual: Tip: Note that this interpretation of SELECT with INTO is quite different from PostgreSQL's regular SELECT INTO command, wherein the INTO target is a newly created table. If you want to create a table from a SELECT result inside a PL/pgSQL function, use the syntax CREATE TABLE ... AS SELECT. http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Res: Res: Problemas com Procedure no Linux
Eu fiz isso pra resolver o problema já, mas não entendi porque não funciona no Linux, e no Windows funciona normal. []'s Marcos Thomaz De: Leonardo Cezar lhce...@gmail.com Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Sexta-feira, 18 de Dezembro de 2009 15:07:41 Assunto: Re: [pgbr-geral] Res: Problemas com Procedure no Linux 2009/12/17 marcos thomaz marcosthom...@yahoo.com.br: ERROR: syntax error at tmp_table_tbg_01 SQL state: 42601 Detail: Expected record variable, row variable, or list of scalar variables following INTO. Context: compile of PL/pgSQL function ajustarptanual near line 15 A linha na procedure onde dá o erro é a seguinte: select coalesce(localidade,26) as localidade, coalesce(categoria,34) as categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from func_valor_arrecadacao( vMes ) group by 1,2,3; Altere para: -- Se a tabela tmp_table_tbg_01 nao existe então crie: CREATE TEMP TABLE tmp_table_tbg_01( localidade TEXT categoriaTEXT refmm TEXT valor TEXT ); -- Senao só altere a linha que deu erro por esta daqui: INSERT INTO tmp_table_tbg_01 SELECT coalesce(localidade,26) , coalesce(categoria,34) , refmm, sum(valor) as valor FROM func_valor_arrecadacao(vMes) GROUP BY 1,2,3; Abraço! -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Res: Res: Res: Problemas com Procedure no Linux
Valeu Osvaldo, muito obrigado. Só estranhei o porque de funcionar em um S.O. e em outro não. []'s Marcos Thomaz De: Osvaldo Kussama osvaldo.kuss...@gmail.com Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Sexta-feira, 18 de Dezembro de 2009 15:08:07 Assunto: Re: [pgbr-geral] Res: Res: Problemas com Procedure no Linux 2009/12/18 marcos thomaz marcosthom...@yahoo.com.br: Olá Eduardo, Antes de mais nada, gostaria de agradecer pela ajuda. Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona, e cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma sintaxe, na procedure, não está executando. Dá justamente o erro indicando a necessidade de uma variável. O caso é que pela sintaxe, a procedure deveria estar criando essa tabela (e fazia isso no windows normalmente, mas agora no linux não tá funcionando). Não estou no trabalho hoje (estou em um dos clientes). Assim que voltar pra casa, retorno com o código da função. De acordo com o manual: Tip: Note that this interpretation of SELECT with INTO is quite different from PostgreSQL's regular SELECT INTO command, wherein the INTO target is a newly created table. If you want to create a table from a SELECT result inside a PL/pgSQL function, use the syntax CREATE TABLE ... AS SELECT. http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] GRANT
Boa a tarde a todos. Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT, somente para ele dar SELECT e criar VIEW´s? Atenciosamente, Gabriel dos Santos Diretor Executivo Focus Desenvolvimento e Consultoria Fone(62) 8481-4662 / 3323-1078 Nossa Dedicação, Sua Recompensa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] GRANT
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com: Boa a tarde a todos. Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT, somente para ele dar SELECT e criar VIEW´s? GRANT SELECT objeto TO usuario; GRANT CREATE ON esquema TO usuario; Atenciosamente, Gabriel dos Santos Diretor Executivo ^^^ que coisa que é o nosso mercado Um diretor trabalhando como DBA. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Res: Res: Res: Problemas com Procedure no Linux
2009/12/18 marcos thomaz marcosthom...@yahoo.com.br: Valeu Osvaldo, muito obrigado. Só estranhei o porque de funcionar em um S.O. e em outro não. ... http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html Creio que a questão não se relaciona ao S.O. mas, como descrita no manual, ao comportamento que é diferente dentro ou fora de uma função PL/pgSQL. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] GRANT
2009/12/18 Leonardo Cezar lhce...@gmail.com: 2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com: Boa a tarde a todos. Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT, somente para ele dar SELECT e criar VIEW´s? GRANT SELECT objeto TO usuario; GRANT CREATE ON esquema TO usuario; Atenciosamente, Gabriel dos Santos Diretor Executivo ^^^ que coisa que é o nosso mercado Um diretor trabalhando como DBA. Pô Leo, releva que é sexta-feira rs, rs Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Problema com ALTER TABLE depois de um SELECT
Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para contornar a situação. Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se logo após faço um ALTER TABLE na mesma tabela este comando não é executado devido ao LOCK gerado pelo SELECT. Na prática isto significa que somente posso alterar a estrutura do banco quando não tiver nenhum usuário conectado, o que dificulta as coisas. É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock após o select? Obrigado, Clayton ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problema com ALTER TABLE depois de um SELECT
2009/12/18 Clayton Graf clay...@intelidata.inf.br: Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para contornar a situação. Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se logo após faço um ALTER TABLE na mesma tabela este comando não é executado devido ao LOCK gerado pelo SELECT. Na prática isto significa que somente posso alterar a estrutura do banco quando não tiver nenhum usuário conectado, o que dificulta as coisas. É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock após o select? Certamente você não está executando um SELECT simples mas sim um SELECT com a cláusula FOR SHARE [1]. Osvaldo [1] http://www.postgresql.org/docs/current/interactive/sql-select.html ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problema com ALTER TABLE depois de um SELECT
Osvaldo Kussama escreveu: 2009/12/18 Clayton Graf clay...@intelidata.inf.br: Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para contornar a situação. Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se logo após faço um ALTER TABLE na mesma tabela este comando não é executado devido ao LOCK gerado pelo SELECT. Na prática isto significa que somente posso alterar a estrutura do banco quando não tiver nenhum usuário conectado, o que dificulta as coisas. É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock após o select? Não. Você certamente está deixando transações abertas antes de executar o ALTER TABLE. Veja: sessão A: euler=# begin; BEGIN euler=# select * from aa; a | b ---+--- (0 rows) sessão B: euler=# begin; BEGIN euler=# alter table aa add column c integer; -- não retorna até conseguir lock LOG: process 4920 still waiting for AccessExclusiveLock on relation 73841 of database 16384 after 1000.230 ms sessão C: euler=# select relation,relation::regclass,pid,mode,granted from pg_locks; relation | relation | pid |mode | granted --+--+---+-+- 73841 | aa | 4920 | AccessExclusiveLock | f | | 4920 | ExclusiveLock | t 10969 | pg_locks | 15405 | AccessShareLock | t 73841 | aa | 15319 | AccessShareLock | t | | 15319 | ExclusiveLock | t | | 15405 | ExclusiveLock | t (6 rows) Veja que a primeira linha mostra que há um travamento que não foi adquirido ainda (granted = 'f'). Logo abaixo descobrimos o processo 15319 com travamento adiquirido que está bloqueando a transação que contém o ALTER TABLE. sessão A: euler=# rollback; -- depois desse comando o ALTER TABLE é executado ROLLBACK sessão B: LOG: process 4920 acquired AccessExclusiveLock on relation 73841 of database 16384 after 253610.896 ms ALTER TABLE euler=# Certamente você não está executando um SELECT simples mas sim um SELECT com a cláusula FOR SHARE [1]. Não necessariamente. Vale ressaltar que _somente_ o AccessExclusiveLock conflita com o AccessShareLock [1]. [1] http://www.postgresql.org/docs/8.4/static/explicit-locking.html -- Euler Taveira de Oliveira http://www.timbira.com/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Formatar as Respostas de Erro do Banco de Dados
Boa noite a todos, Gostaria de saber se existe alguma forma de tratar as menssagens de erro quando violam um CONSTRAINT de que foi estabelecida em uma tabela. Com por exemplo: CONSTRAINT chk_valor_positivo CHECK (valor = 0); Pois caso o meu sistema PHP quando for gravar um produto com o valor negativo, o banco de dados irá retornar um mensagem de erro da seguinte forma: ERROR: new row for relation tbproduto violates check constraint chk_valor_positivo so que eu gostaria de fazer com que caso a CHECK fosse violada, para retornar a seguinte mensagem: O valor do produto não pode ser menor do que zero. Alguem sabe como fazer isto? -- Atenciosamente, Gabriel dos Santos Diretor Executivo Focus Desenvolvimento e Consultoria Fone(62) 8481-4662 / 3323-1078 Nossa Dedicação, Sua Recompensa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] dúvida com expressões regulares e a função regexp_matches()
Estou tentando pegar todas as ocorrências dentro de um padrão e está complicado. São palavras limitadas nos dois lados com um hífen -. Tentei usar desta forma a função regexp_matches(): select regexp_matches('-MARIA- -JOAO- -PEDRO-', '-(.*)-') Esperando retornar: {MARIA, JOAO, PEDRO} Mas estou recebendo {MARIA- -JOAO- -PEDRO} Isso porque: O primeiro traço da minha expressão está casando com o primeiro traço da string. O ultimo traço está casando com o ultimo da string. Esperava casar com a primeira ocorrência logo após a primeira palavra MARIA e assim ir construindo o vetor com os nomes. -- Tarcisio F. Sassara ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Formatar as Respostas de Erro do Banco de Dados
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com: Boa noite a todos, Gostaria de saber se existe alguma forma de tratar as menssagens de erro quando violam um CONSTRAINT de que foi estabelecida em uma tabela. Com por exemplo: CONSTRAINT chk_valor_positivo CHECK (valor = 0); Pois caso o meu sistema PHP quando for gravar um produto com o valor negativo, o banco de dados irá retornar um mensagem de erro da seguinte forma: ERROR: new row for relation tbproduto violates check constraint chk_valor_positivo so que eu gostaria de fazer com que caso a CHECK fosse violada, para retornar a seguinte mensagem: O valor do produto não pode ser menor do que zero. Alguem sabe como fazer isto? Não trabalho com PHP então não sei se há como fazer isso, mas em outras IDEs para desktop (Visual Foxpro, Powerbuilder, etc) é possível tratar os erros de SQL antes que uma mensagem de erro _apareça_. Isto depende mais do PHP, basta executar o comando SQL e testar o código de retorno do banco de dados (geralmente SQLDBCode). Se o código for erro, imprima uma mensagem diferente para o usuário. -- TIAGO J. ADAMI http://www.adamiworks.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Formatar as Respostas de Erro do Banco de Dados
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com: Boa noite a todos, Gostaria de saber se existe alguma forma de tratar as menssagens de erro quando violam um CONSTRAINT de que foi estabelecida em uma tabela. Com por exemplo: CONSTRAINT chk_valor_positivo CHECK (valor = 0); Pois caso o meu sistema PHP quando for gravar um produto com o valor negativo, o banco de dados irá retornar um mensagem de erro da seguinte forma: ERROR: new row for relation tbproduto violates check constraint chk_valor_positivo so que eu gostaria de fazer com que caso a CHECK fosse violada, para retornar a seguinte mensagem: O valor do produto não pode ser menor do que zero. Alguem sabe como fazer isto? -- Atenciosamente, Gabriel dos Santos Diretor Executivo Focus Desenvolvimento e Consultoria Fone(62) 8481-4662 / 3323-1078 Nossa Dedicação, Sua Recompensa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Não é algo relacionado ao PostgreSQL... Depende de como estiver trabalhando com o PHP. Se estiver usando o PDO, poderá usar blocos try-catch para capturar os erros e tratar como na programação OO de sempre. Documentação do PHP PDO: http://php.net/manual/en/book.pdo.php Outra solução usando o banco é criar uma procedure que insere o registro e retorna uma string com o status, tratando qualquer exceção na procedure, Desta forma nunca retornará um erro para o script PHP. O problema é ter que criar as funções no banco e manter mais coisas. Abraço, Infelizmente não posso lhe ajudar mais. -- Tarcisio F. Sassara ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ferramenta para modelagem
Claro, Depois de instalar o programa, é necessário copiar todos os arquivos Dll da pasta bin do postgresql para o programa. Eu também apanhei quanto a isso antes, tinha copiado o arquivo libpq.dll e somente isso não era suficiente, ai li que precisava copiar todas as dlls da instalação do postgresql e finalmente tudo funcionou! Espero que também funcione direito contigo, Abraços, 2009/12/18 Tiago Valério tiagosvale...@gmail.com Andre Instalei o modelright apresenta o seguinte erro apresentou, 'Database libary not found', to fazendo um conexão remota.Existe a configuração da libpq.Poderia me dar um auxilio na resolução deste problema? Valeu. 2009/12/16 Andre Fernandes fernandes.an...@gmail.com Há algumas bacanas, a de que mais gosto é ModelRight for PostgreSQL (community edition). www.modelright.com Mas há outras também interessantes, mas não me recordo os nomes no momento. Minha dica fica para o ModelRight, tanto a versão gratuita é muito boa, quanto a paga que não é absurdamente cara como muitos concorrentes. Abraços, 2009/12/16 Janderson Matos janderson.ma...@gmail.com Olá PessoALL, Alguém conhece uma ferramenta para modelagem (for Win), que seja free e que se aproxime ao máximo do MySQL Workbench (para quem conhece), ou poderia recomendar uma que tenha uma boa interface gráfica ? Janderson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- André de Camargo Fernandes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- André de Camargo Fernandes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] dúvida com expressões regulares e a função regexp_matches()
2009/12/18 Tarcísio Sassara sassara.tarci...@gmail.com: Estou tentando pegar todas as ocorrências dentro de um padrão e está complicado. São palavras limitadas nos dois lados com um hífen -. Tentei usar desta forma a função regexp_matches(): select regexp_matches('-MARIA- -JOAO- -PEDRO-', '-(.*)-') Esperando retornar: {MARIA, JOAO, PEDRO} Mas estou recebendo {MARIA- -JOAO- -PEDRO} Isso porque: O primeiro traço da minha expressão está casando com o primeiro traço da string. O ultimo traço está casando com o ultimo da string. Esperava casar com a primeira ocorrência logo após a primeira palavra MARIA e assim ir construindo o vetor com os nomes. Da forma abaixo o primeiro e último elemntos do array são strings de comprimento zero: bdteste=# select regexp_split_to_array('-MARIA- -JOAO- -PEDRO-', E'-( -)?'); regexp_split_to_array -- {,MARIA,JOAO,PEDRO,} (1 registro) Uma possível maneira de evitar isso seria eliminar o '-' do início e fim antes de tratar: bdteste=# select regexp_split_to_array(regexp_replace('-MARIA- -JOAO- -PEDRO-','^-(.*)-$',E'\\1'), E'- -'); regexp_split_to_array --- {MARIA,JOAO,PEDRO} (1 registro) Deve existir uma maneira mais elegante. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral