[pgbr-geral] Picos de atendimento
Bom dia, pessoal Tenho uma tabela com os campos: ... hsaequ timestamp without time zone, hchde1 timestamp without time zone, hsade1 timestamp without time zone, hchde2 timestamp without time zone, hsade2 timestamp without time zone, hrede1 timestamp without time zone, hlimov timestamp without time zone, ... Onde: hsaequ - Hora de saída para o serviço hchde1 - Hora de chegada ao destino 1 hsade1 - Hora de saída do destino 1 hchde2 - Hora de chegada ao destino 2 hsade2 - Hora de saída do destino 2 hrede1 - Hora de retorno ao destino 1 hlimov - Hora de liberação da equipe Para determinar o pico de atendimento, eu fiz uma view conforme abaixo: ... AS SELECT num_servico, -- Horarios de 00 a 23 horas CASE WHEN to_char(hsaequ, '-mm-dd 00'::text || ':00')::timestamp BETWEEN to_char(hsaequ, '-mm-dd HH24'::text || ':00')::timestamp AND to_char(hlimov, '-mm-dd HH24'::text || ':00')::timestamp THEN 1 ELSE 0 END as _00, ... CASE WHEN to_char(hsaequ, '-mm-dd 23'::text || ':00')::timestamp BETWEEN to_char(hsaequ, '-mm-dd HH24'::text || ':23')::timestamp AND to_char(hlimov, '-mm-dd HH24'::text || ':23')::timestamp THEN 1 ELSE 0 END as _23 from servico_recursos A intenção desta view é determinar a ocupação da equipe em um determinado período. O que estou fazendo é pegar a parte do campo que representa a hora (em hsaequ e hlimov) e contando hsaequ dentro desse intervalo. Quando estiver no intervalo, conta 1. Caso contrário, conta 0. Exemplos de contagem (resultado da view): hsaequ = 01-12-2013 09:21 hlimov = 01-12-2013 11:21 09:00 = 1 10:00 = 1 11:00 = 1 hsaequ = 01-12-2013 07:05 hlimov = 01-12-2013 13:01 07:00 = 1 08:00 = 1 09:00 = 1 10:00 = 1 11:00 = 1 12:00 = 1 13:00 = 1 Posteriormente, para construir o relatório de ocupação, outrra view se faz necessária: AS SELECT ... sum(_00) AS soma_00, sum(_01) AS soma_01, sum(_02) AS soma_02, sum(_03) AS soma_03, ... sum(_23) AS soma_23 FROM view_picos_hsaequ WHERE ... Finalmente, se consegui me fazer entender, gostaria de opiniões e sugestões, e se estou correto nesta lógica... Se é possível outra lógica mais precisa... Idéias... Att Carlos Antônio Pereira ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] record to string
>>FOR rec IN SELECT * FROM usuario where status = 1 >>if (_resultado=1) then >>UPDATE usuario SET salario=_newsalario, cdlote =_lote where id in*** >>(rec.id)*** >>insert into public.enviolog (datahoraenvio, json, cdlote, ds_resultado, >>status) values( now(), _montajson, _lote, _resultado, 1; >>END IF; >>coloquei entre *** onde deveria de extrair todos os valores da coluna rec.id >>e fazer um in, pois senão tenho que executar o update um a um, e neste caso >>faço um update unico... newsalario ou NEW.salario? _resultado ou rec._resultado? no insert, os campos não devem ser precedidos por rec.? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Retorno de uma funcao como tabela
From: Ursulino Barboza Sent: Wednesday, August 31, 2016 10:15 AM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Retorno de uma funcao como tabela Segue outra sugestão: Você pode dividir uma matriz para um conjunto de resultados usando a função unnest, e você pode transformar uma string literal em uma matriz usando a função string_to_array. Combine os dois e você começa a seguinte:select unnest(string_to_array('the quick lazy fox', ' ')); unnest the quick lazy fox (4 filas)Na versão 8.2 não existe a função UNNEST, segue script que cria: create or replace function unnest(anyarray) returns setof anyelement language sql as $$ select $1[i] from generate_series(array_lower($1, 1), array_upper($1, 1)) as i; $$; Ok, Ursulino. Agradeço a ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Retorno de uma funcao como tabela
Em 30/08/2016 19:50, Euler Taveira escreveu: > On 30-08-2016 15:59, Carlos Antônio Pereira wrote: > >> Pessoal, estou querendo construir uma função assim: select >> tb_dominio('Masculino; Feminino') > > Não precisa de função; ela já existe. O que parece que você quer é: > > # select row_number() over(), a FROM > regexp_split_to_table('um;dois;tres', ';') a; > row_number | a > +-- > 1 | um > 2 | dois > 3 | tres > (3 registros) > > Da próxima vez, descreva melhor entrada e saída. Não estava claro de > onde vinha o "código" (ainda não sei se é exatamente isso que você quer). É isso mesmo Euler. Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Retorno de uma funcao como tabela
Está retornando este erro. ERROR: syntax error at or near "$1" LINE 1: CREATE TEMP TABLE public.dominio( $1 INTEGER, $2 TEXT ) ^ QUERY: CREATE TEMP TABLE public.dominio( $1 INTEGER, $2 TEXT ) CONTEXT: SQL statement in PL/PgSQL function "dominio" near line 9 ** Erro ** ERROR: syntax error at or near "$1"___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Retorno de uma funcao como tabela
Ola boa tarde amigo Veja uma funcao exemplo: CREATE OR REPLACE FUNCTION teste(pSeuParaMetro) RETURNS TABLE(id_produto integer, codfor character varying, codbar character varying, descricao character varying, qtd_minima integer, estoque numeric, reposicao numeric, prateleira character varying) AS $BODY$ BEGIN RETURN QUERY SELECT id_produto , codfor , codbar , descricao, qtd_minima , estoque , reposicao , prateleira FROM tabela WHERE campo=pSeuParaMetro; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000; veja se isto te ajuda. Obrigado pela dica. Mas a idéia é construir um record e retorná-lo a partir do parâmetro passado para a função, sem que tenha uma tabela relacionada ao retorno. Algo como: select dominio(‘Sim;Não’); Retorno: codigo descricao 1 Sim 2 Não select dominio(‘CPF;CNPJ’); codigo descricao 1 CPF 2 CNPJ Pensei nisto: CREATE TYPE type_dominio AS ( codigo INT, descricao VARCHAR ); CREATE FUNCTION dominio(varchar) RETURNS SETOF type_dominio AS $$ DECLARE dados_dominio type_dominio; BEGIN FOR ... LOOP ...; END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql' SELECT * FROM dominio(‘Sim;Não’); Não sei o que fazer dentro do loop... Talvez se passar um array como parametro... ___ 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
Re: [pgbr-geral] Retorno de uma funcao como tabela
Ola boa tarde amigo Veja uma funcao exemplo: CREATE OR REPLACE FUNCTION teste(pSeuParaMetro) RETURNS TABLE(id_produto integer, codfor character varying, codbar character varying, descricao character varying, qtd_minima integer, estoque numeric, reposicao numeric, prateleira character varying) AS $BODY$ BEGIN RETURN QUERY SELECT id_produto , codfor , codbar , descricao, qtd_minima , estoque , reposicao , prateleira FROM tabela WHERE campo=pSeuParaMetro; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000; veja se isto te ajuda. Obrigado pela dica. Mas a idéia é construir um record e retorná-lo a partir do parâmetro passado para a função, sem que tenha uma tabela relacionada ao retorno. Algo como: select dominio(‘Sim;Não’); Retorno: codigo descricao 1 Sim 2 Não select dominio(‘CPF;CNPJ’); codigo descricao 1 CPF 2 CNPJ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Retorno de uma funcao como tabela
Pessoal, estou querendo construir uma função assim: select tb_dominio(‘Masculino; Feminino’) Onde o retorno seja tipo record mais ou menos assim: codigo descricao 1Masculino 2Feminino Alguma idéia? Att Carlos___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Restaurar PostgreSQL a partir do diretório data
Em 09/07/2016 21:07, Carlos Antônio Pereira escreveu: > Boa noite pessoal. > > Tive um problema com servidor ao fazer uma atualização e agora o PostgreSQL > não sobe. > > A versão é 8.4.18 e, ao atualizar um modulo do PHP, acabei mandando coisas do > PostgreSQL 9.2. > > Já preparei outro servidor e ia baixar o banco, ao que percebi que meu backup > está umas 4 horas desatualizado. > > Sendo assim, pergunto: Se copiar a pasta data de um servidor para outro, > considerando a mesma versão e tudo igual, vai funcionar? > > Obrigado pela ajuda de todos. Resolvido. Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Restaurar PostgreSQL a partir do diretório data
Boa noite pessoal. Tive um problema com servidor ao fazer uma atualização e agora o PostgreSQL não sobe. A versão é 8.4.18 e, ao atualizar um modulo do PHP, acabei mandando coisas do PostgreSQL 9.2. Já preparei outro servidor e ia baixar o banco, ao que percebi que meu backup está umas 4 horas desatualizado. Sendo assim, pergunto: Se copiar a pasta data de um servidor para outro, considerando a mesma versão e tudo igual, vai funcionar? Obrigado pela ajuda de todos. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Constraint para valer a partir do momento da criação
Boa noite, pessoal. No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Att Carlos___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint para valer a partir do momento da criação
Ok, Euler. Obrigado pela dica e desculpe pelo sequestro. -Mensagem Original- From: Euler Taveira Sent: Monday, June 17, 2013 8:51 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Constraint para valer a partir do momento da criação On 17-06-2013 19:22, Carlos Antônio Pereira wrote: [Não sequestre um assunto, ou seja, não clique em responder e remove a discussão anterior. Ao invés disso, copie o endereço da lista e produza um *novo* email. É tão difícil fazer isso?] No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Sim. Porém, somente a partir da 9.1 [1]. ALTER TABLE foo ADD table_constraint NOT VALID [1] http://www.postgresql.org/docs/current/static/sql-altertable.html -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ 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
Re: [pgbr-geral] Inscrições abertas para o PGBR2013
Bom dia, Fábio. Vou passar o link para meus amigos. Onde consigo informações a respeito de inscrição de estudante? No site diz que é necessário apresentar comprovante de matrícula. Comprovante de Matrícula = Carteira de Estudante? Att Carlos From: Fábio Telles Rodriguez Sent: Monday, May 20, 2013 5:35 PM To: Comunidade PostgreSQL Brasileira ; Organização do PostgreSQL Brasil Subject: [pgbr-geral] Inscrições abertas para o PGBR2013 Senhores, as inscrições estão abertas para o PGBR2013 em: http://pgbr.postgresql.org.br/2013/inscricoes.php Como de costume, o valor é promocional para quem se inscrever antes. Contamos com a ajuda de todos na divulgação do evento. Para quem ainda não viu... a lista das palestras e palestrantes também já está publicada em: http://pgbr.postgresql.org.br/2013/palestrantes.php http://pgbr.postgresql.org.br/2013/palestras.php -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ 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
Re: [pgbr-geral] erro com kernell
Boa tarde, senhores. Alguem conhece algum curso de especialização/certificação em PostgreSQL? Att Carlos Antonio Pereira___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Serviços e Consultora PostgreSQL
Senhores, trabalho com o PostgreSQL desde o ano de 2001 e ofereço meus serviços como Consultor e/ou DBA. Trabalho na Região de Brasília – DF. Atualmente utilizo a versão 8.4 na maioria dos projetos que tenho usando o PG. Estou apto a instalar, configurar e manter o banco em ambientes Linux ou Windows. Atenciosamente, Carlos Antônio Pereira. ___ 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 versões de registros
Boa tarde, senhores. Em uma aplicação temos várias etapas feitas ao mesmo tempo por vários usuários. O problema que estamos tendo é que um perfil abre o registro em memória enquanto outro, com o mesmo registro, faz várias alterações em outros campos. Quando o primeiro perfil prenche seus campos de uma mesma tabela, a versão dele prevalece mesmo nos registros onde ele não alterou nada. Teria alguma forma de atualizar apenas os campos que esse primeiro perfil alterou? From: Anselmo Silva Sent: Thursday, August 30, 2012 2:32 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] RES: Cross Table Em 30 de agosto de 2012 14:30, KM kminformat...@kminformatica.com.br escreveu: Tem alguma configuracao no Postgres que determino o tempo de log de cada usuário no banco? Não precisa ser por usuário,mas tipo o cara ficou 1 dia logado o banco desconecta. Grato, Marcelo. -Mensagem original- De: pgbr-geral-boun...@listas.postgresql.org.br [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Osvaldo Kussama Enviada em: quinta-feira, 30 de agosto de 2012 14:20 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Cross Table 2012/8/30, Marcelo Silva marc...@ig.com.br: Tem como criar uma cross tables simples no postgres? Ou seja, trazer o result de um select em colunas Select descricao from Tabela Result descricao1 descricao2 descricao3 etc Mas mostrar o Result assim: descricao1, descricao2, descricao3, etc Veja crosstab no módulo tablefunc: http://www.postgresql.org/docs/current/interactive/tablefunc.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 mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Por favor, mantenha o assunto do tópico... ou crie um novo tópico. -- Anselmo M. Silva ___ 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] Interpretar formula gravada em um campo
Boa tarde, senhores. Preciso armazenar uma formula matematica em um campo para depois fazer uso dela para atualizar outro. Por exemplo idproduto produto qtde consumo calculo 1 dipirona gotas 10 500020*15 O produto dipirona gotas é vendido em frascos de 20ml. O consumo desse produto é medido em gotas. Cada ml tem 15 gotas. Assim, ao entrar o produto em meu estoque, preciso que ele atualize o campo consumo para consumo = consumo + (qtde*20*15) ou seja: 5000 + (10 * 20 * 15) 5000 + 3000 8000 Alguém tem idéia? insert ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Extrair mes e ano Postgresql
select cast(to_char(current_date, 'MM/') as char(7)) as periodo -Mensagem Original- From: Tiago Adami Sent: Wednesday, August 22, 2012 1:23 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Extrair mes e ano Postgresql Em 22 de agosto de 2012 00:05, Matheus de Oliveira matioli.math...@gmail.com escreveu: Em 21/08/2012 21:27, Edson - Listas edson...@gmail.com escreveu: Olá Pessoal, Como extrair o mês e ano em um campo data no PostgreSql? Exemplo: (08/2012) Extrair só a data eu consegui... select EXTRACT(MONTH from a.dt_mov) mes,sum(a.vlr_final)total from movdirhe a where a.dt_mov between '01/01/2010' and '21/08/2012' group by EXTRACT(MONTH from a.dt_mov) order by mes asc Edson Dê uma olhada na função to_char. Resumindo pelo exemplo: SELECT LTRIM(TO_CHAR( EXTRACT(MONTH FROM a.dt_mov), '00' )) || '/' || LTRIM(TO_CHAR( EXTRACT(YEAR FROM a.dt_mov), '' )) AS MES_ANO NOTAS: * Não sei se era a sua dúvida, mas valores texto não são 'somados' e sim 'concatenados' com o operador 'pipe-pipe' = || * Se você não está limitando sua consulta a um intervalo dentro de apenas 1 ano, ordenar somente por mês não trará a ordem cronológica exata. O correto seria ordenar por ano e mês nesta ordem, ou simplesmente pelo campo 'a.dt_mov'. -- 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Dica sobre sequência sem usar campo serial.
voce pode criar a sequencia isoladamente e usar as funções nextval, curval, etc para manipulá-la via aplicação ou gatilho. att carlos From: Marco Aurélio V. da Silva Sent: Thursday, May 31, 2012 8:09 PM To: Comunidade PostgreSQL Brasileira Subject: [pgbr-geral] Dica sobre sequência sem usar campo serial. Caros, Não lembro se esse assunto já foi discutido na lista, mas vamos lá. Estou desenvolvendo um sistema que terá vários cadastros com numeração sequencial gerada pelo sistema, mas preciso evitar ao máximo ter furos na sequência. O sistema é multiusuario, e há a possibilidade de vários usuários fazendo cadastro ao mesmo tempo. A lógica que desenvolvi é o seguinte, uma função (vb.net+npgsql) que pega uma determinada tabela e busca qual o maior codigo dela ai a função soma mais 1 e adiciona o novo registro, logo a função é composta por dois comandos um select para pegar o ultimo codigo, e um insert para inserir a nova numeração. Fazendo um stress teste na função com 3 usuários, só apos 115 tentativas dando enter ao mesmo tempo na tela conseguimos duplicar um número, mas fazendo um programa que faz um for de 1 a 200 da função rodando em tres maquinas ao mesmo tempo deu mais ou menos uns 30% de duplicidade. Adicionando um sleep de 0,1 segundo antes de cada select a duplicidade caiu para 15% mas ainda ocorreu. Existe alguma possibilidade de melhorar isto sem usar sequence ? A sequence me gera o seguinte problema, o usuario entra na tela de cadastro e desiste, ai excluo este numero para reaproveitar se ninguem ja tiver incluido um numero maior. Posso fazer o controle de duplicidade tb, mas ai teria que ficar tratando a mensagem de erro. Tem alguma outra forma ? Desde já agradeço a atenção recebida. Marco Aurélio V. da Silva ma...@prodatanet.com.br marcoprod...@gmail.com msn: ma...@prodatanet.com.br Prodata Inf. e Cadastros LTDA (33) 3322- ___ 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
Re: [pgbr-geral] Dica sobre sequência sem usar campo serial.
Amigão, eu tive que implementar este código tempos atrás: select setval('servico_pessoal_sequencia_seq', (select max(sequencia) from servico_pessoal) + 1); Assim, você pode redefinir o último valor. Acho que essa sua teoria jamais vai funcionar porque você já está querendo fazer o trabalho que o próprio banco já faz (com muita eficiência) com código totalmente testado e funcional. em vez de ficar tentando reinventar a roda, porque você não coloca a busca da sequencia para se feita no insert? E você não precisa de 2 comandos para implementar. Olha só: insert into tabela (campo1, campo2, chaveincremental) values (:campo1,:campo2, nextval(‘minha_sequence’); Quando serão perdidos números de sequência desta forma, se aqui seria o último passo antes do commit? Lembre-se, um roolback restaura o registro no seu estado anterior. Assim, em caso de falha, sua sequence também volta ao estado anterior. Por fim, olha o tamanho do int4: Whole integer values, –2147483648 to +2.147.483.647 From: Matheus de Oliveira Sent: Thursday, May 31, 2012 10:23 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral]Dica sobre sequência sem usar campo serial. 2012/5/31 Marco Aurélio V. da Silva marcoprod...@gmail.com Caros, Não lembro se esse assunto já foi discutido na lista, mas vamos lá. Estou desenvolvendo um sistema que terá vários cadastros com numeração sequencial gerada pelo sistema, mas preciso evitar ao máximo ter furos na sequência. O sistema é multiusuario, e há a possibilidade de vários usuários fazendo cadastro ao mesmo tempo. A lógica que desenvolvi é o seguinte, uma função (vb.net+npgsql) que pega uma determinada tabela e busca qual o maior codigo dela ai a função soma mais 1 e adiciona o novo registro, logo a função é composta por dois comandos um select para pegar o ultimo codigo, e um insert para inserir a nova numeração. Fazendo um stress teste na função com 3 usuários, só apos 115 tentativas dando enter ao mesmo tempo na tela conseguimos duplicar um número, mas fazendo um programa que faz um for de 1 a 200 da função rodando em tres maquinas ao mesmo tempo deu mais ou menos uns 30% de duplicidade. Adicionando um sleep de 0,1 segundo antes de cada select a duplicidade caiu para 15% mas ainda ocorreu. Isso não vai dar certo dessa forma, desista. O que pode ser feito é gerar um lock ao pegar o valor, e liberá-lo após inserir/atualizar os dados. Você pode fazer isso usando o SELECT ... FOR UPDATE. Existe alguma possibilidade de melhorar isto sem usar sequence ? A sequence me gera o seguinte problema, o usuario entra na tela de cadastro e desiste, ai excluo este numero para reaproveitar se ninguem ja tiver incluido um numero maior. Posso fazer o controle de duplicidade tb, mas ai teria que ficar tratando a mensagem de erro. Tem alguma outra forma ? Não basta gerar o valor da sequência apenas quando for realmente inserir o registro, e não quando abre a tela? Atenciosamente, -- Matheus de Oliveira Bacharelado em Ciências de Computação Laboratório de Computação de Alto Desempenho - LCAD Instituto de Ciências Matemáticas e de Computação - ICMC Universidade de São Paulo - USP ___ 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
Re: [pgbr-geral] PostgreSQL Magazine
Eu também quero Como procedemos? Att Carlos -Mensagem Original- From: Guimarães Faria Corcete DUTRA, Leandro Sent: Tuesday, May 15, 2012 9:57 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] PostgreSQL Magazine 2012/5/15 Leonardo Cezar lhce...@gmail.com: Eu quero! Façamos o seguinte: uma semana de prazo para todos se manifestarem? Ou bastam, digamos, três dias? Lembrando que tem a edição 0 ainda disponível, também. ___ 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
Re: [pgbr-geral] modelo conceptual
PowerDesigner -Mensagem Original- From: Leandro Guimarães Faria Corce DUTRA Sent: Saturday, February 25, 2012 6:24 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] modelo conceptual Le 2012-F-23 14h17, Pedro Costa a écrit : Tenho de fazer um modelo conceptual para apresentar, alguém conhece uma ferramenta intuitiva e poderosa para tal? Caneta e papel? -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT-3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ 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
Re: [pgbr-geral] dúvida clausula where
SELECT n_rua, count(n_rua) as Ruas_repetidas FROM ruas GROUP BY ruas.n_rua having count(n_rua) 1; -Mensagem Original- From: Pedro Costa Sent: Wednesday, January 11, 2012 3:34 PM To: Comunidade PostgreSQL Brasileira Subject: [pgbr-geral] dúvida clausula where Pessoal eu tenho a seguinte consulta: E agora quero que apareça só as ruas com o campo do count maior que um. Podem dizer-me onde insiro a clausula where? Dá-me sempre erro, não reconhece o campo ruas_repetidas'. Obrigado pedro costa ___ 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
Re: [pgbr-geral] Software para fazer MER e descrição de dados para PostgreSQL
PowerDesign From: Guilherme Carvalho Sent: Thursday, October 20, 2011 6:25 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Software para fazer MER e descrição de dados para PostgreSQL Se não me engano o Case também faz. Analista de sistemas twitter: @GCarneiro http://djangopeople.net/guilhermecarvalho/ 2011/10/20 Edson Marques marqued...@gmail.com O EA, Enterprise Artchitect é muito bom! Gera o DER em HTML, doc, imagem, etc. 2011/10/20 Eduardo Alexandre eduardog...@gmail.com Em 20 de outubro de 2011 09:41, Dickson S. Guedes lis...@guedesoft.net escreveu: MER ou DER? Considerando que o Modelo de Entidade Relacionamento (MER) é conceitual e que o Diagrama de Entidade Relacionamento (DER) é a relação/representação entre as tabelas mesmo, seria o DER. Vou testar o Power Architect. Abraços, Eduardo Alexandre ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Édson Marques Analista Desenvolvedor Java __ ___ 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 mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Dump Insert X Copy
Pessoal, tenho um script de backup que gera 2 dumps: um full com inserts e um full com copy. Sei que o backup com copy é muito agil para restaurar, mas não confio 100% neste método (razão pela qual gero os dois). Pergunto: Dá para confiar no backup gerado com copy, ou seria melhor continuar com o script gerando os dois. Quais os pros e contras dos dois? Att Carlos ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Garantia de Integridade
Integridade em BD podem ser construídas de duas formas: Através de Constraints e Programação em Pl/Sql (Integridade Semântica). como no seu caso não é possível definir a primeira, você deve construir função e associá-la a algum evento de DDL. -Mensagem Original- From: Vinicius Santos Sent: Thursday, September 22, 2011 10:20 PM To: Comunidade PostgreSQL Brasileira Subject: [pgbr-geral] Garantia de Integridade Boa noite pessoal, Preciso de uma idéia/sugestão de como garantir o seguinte: Temos um ERP com uma tabela de saídas e outra com uma tabela de entradas, e uma terceira com o saldo das duas. Por Exemplo: o total da tabela de saídas deu 100 e o total da tabela de entradas deu 110, ou seja o saldo é 10, para um determinado produto. O saldo 10 é gravado em outra tabela, que grava o saldo e a localizacão do produto no estoque. Por ex.: 10 peças no local Depósito 1. O que eu queria fazer é garantir que a tabela de saldo sempre tenha entradas - saídas = saldo. Atualmente, sem um mecanismo de integridade deste tipo, eu poderia colocar a tabela com um saldo de 25. O que resultaria em 110 - 100 = 25. O único jeito que estou visualizando é por meio de trigger. Não temos o fonte do ERP, e não temos como mudar a modelagem, por motivos óbvios. Se alguém tiver alguma sugestão, agradeço. ___ 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
Re: [pgbr-geral] Tamanho do campo
crie um campo tempoario; alimente-o com o campo a ser alterado; exclua o campo a ser alterado; crie o campo no tamanho desejado; faca o update do campo temporario para o campo recem criado. pt saudaçoes. FACA BACKUP! -Mensagem Original- From: Leandro Guimarães Faria Corcete DUTRA Sent: Friday, August 19, 2011 8:14 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Tamanho do campo Le 2011.A.19 13h21, Marcos Fabricio Corso a écrit : sim preciso alterar o tamanho do campo da tabela, e urgente ainda A pergunta que não quer calar: mór di quê? -- Skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 Google Talk: xmpp:leand...@jabber.org +55 (11) 9406 7191 MSNIM:chat?contact=lean...@dutra.fastmail.fm sip:leand...@iptel.org ICQ: AIM:GoIM?screenname=61287803 ___ 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
Re: [pgbr-geral] Tamanho do campo
as versoes mais recentes do pg tem o comando alter column -Mensagem Original- From: Leandro Guimarães Faria Corcete DUTRA Sent: Friday, August 19, 2011 8:14 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Tamanho do campo Le 2011.A.19 13h21, Marcos Fabricio Corso a écrit : sim preciso alterar o tamanho do campo da tabela, e urgente ainda A pergunta que não quer calar: mór di quê? -- Skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 Google Talk: xmpp:leand...@jabber.org +55 (11) 9406 7191 MSNIM:chat?contact=lean...@dutra.fastmail.fm sip:leand...@iptel.org ICQ: AIM:GoIM?screenname=61287803 ___ 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