Re: [pgbr-geral] Ajuda modelagem
Daê Fabio, blz? Então, eu tentaria assim ( pq já vi soluções para problemas semelhantes implementadas assim): 1- Faria uma tabela genérica instituição, com os dados comuns a todas as instituições. 2 - Faria uma tabela detalhe para cada tipo de instituição, com uma fk referenciando a tabela instituição (relação 1 para 1). Por exemplo, tabela detalhe_oab, detalhe_cartorio, detalhe_tj, etc. 3- Na tabela usuário: a) Colocaria uma fk apontando para instituição OU ENTÃO b) Criaria uma entidade relacionamento para ligar a instituição ao usuário. Essa soluçãopossibilitaria uma instituição possuir mais de um usuário ou vice-versa, mas não necessariamente. Bem, esse seria o meu primeiro esboço. Peço aos colegas da lista que dêem mais sugestões. Att Chiqueti 2009/8/11 fabio.ebner fabio.eb...@dnasolution.com.br: Pessoa, tenho q modelar um banco mas nao estou conseguindo, sera que alguem pode me dar uma ajuda? o projeto e o seguinte: tenho q fazer um sistema de consultas, e respostas(essa parte de consulta e resposta bele, o problema e a parte de atores) tenho q ter toda uma hierarquia de usuario (um usuario master, que pode adicionar varios usuarios) porem esse usuario master, pode ser tanto de uma instituicao(OAB, CARTORIO, TRIBUNAL DE JUSTICA, EMPRESA) como pode ser uma Pessoa fisica normal, antes eu tinha criado uma tabela de INSTITUICAO porem o meu problema eh que os dados q eu tenho q informar para cada instituicao, sao complemente diferente entre elas. cada uma tem uma peculiaridade, que acho ficar inviavel juntar td em uma tabela soh, pensei em separa-las, mas dai o problema de eu separar as tabelas e como vou atrelar um usuario a um tipo de instituicao, se eu deixar apenas um campo de tipo cd_instituicao no usuario sem referenciar ele a uma unica tabela, como vou saber em qual tabela buscar os dados da instituicao daquele usuario, isso eh se ele tiver uma instituicao, por exemplo pessoa fisica nao tem instituicao. entenderam?? ___ 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: Ajuda modelagem
Bom, pelo que entendi, a hierarquia de usuários não está ligada à instituição então, eu criaria uma entidade hierarquia_usuario (ou algo assim) e a ligaria com a entidade usuario. Os usuários que tivessem a fk para hierarquia = master poderiam criar usuários para sua instituição (fk vinda de instituição) e por ai vai... De: Fabiano Chiqueti chiqu...@gmail.com Para: fabio.ebner fabio.eb...@dnasolution.com.br; Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Terça-feira, 11 de Agosto de 2009 12:11:47 Assunto: Re: [pgbr-geral] Ajuda modelagem Daê Fabio, blz? Então, eu tentaria assim ( pq já vi soluções para problemas semelhantes implementadas assim): 1- Faria uma tabela genérica instituição, com os dados comuns a todas as instituições. 2 - Faria uma tabela detalhe para cada tipo de instituição, com uma fk referenciando a tabela instituição (relação 1 para 1). Por exemplo, tabela detalhe_oab, detalhe_cartorio, detalhe_tj, etc. 3- Na tabela usuário: a) Colocaria uma fk apontando para instituição OU ENTÃO b) Criaria uma entidade relacionamento para ligar a instituição ao usuário. Essa soluçãopossibilitaria uma instituição possuir mais de um usuário ou vice-versa, mas não necessariamente. Bem, esse seria o meu primeiro esboço. Peço aos colegas da lista que dêem mais sugestões. Att Chiqueti 2009/8/11 fabio.ebner fabio.eb...@dnasolution.com.br: Pessoa, tenho q modelar um banco mas nao estou conseguindo, sera que alguem pode me dar uma ajuda? o projeto e o seguinte: tenho q fazer um sistema de consultas, e respostas(essa parte de consulta e resposta bele, o problema e a parte de atores) tenho q ter toda uma hierarquia de usuario (um usuario master, que pode adicionar varios usuarios) porem esse usuario master, pode ser tanto de uma instituicao(OAB, CARTORIO, TRIBUNAL DE JUSTICA, EMPRESA) como pode ser uma Pessoa fisica normal, antes eu tinha criado uma tabela de INSTITUICAO porem o meu problema eh que os dados q eu tenho q informar para cada instituicao, sao complemente diferente entre elas. cada uma tem uma peculiaridade, que acho ficar inviavel juntar td em uma tabela soh, pensei em separa-las, mas dai o problema de eu separar as tabelas e como vou atrelar um usuario a um tipo de instituicao, se eu deixar apenas um campo de tipo cd_instituicao no usuario sem referenciar ele a uma unica tabela, como vou saber em qual tabela buscar os dados da instituicao daquele usuario, isso eh se ele tiver uma instituicao, por exemplo pessoa fisica nao tem instituicao. entenderam?? ___ 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 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] funcionamento do driver postgresql-8.4...jdbc4.jar
Em Mon, 10 Aug 2009 16:50:26 -0300, jorge sanfelice jorgesanfel...@gmail.com escreveu: Resumindo, estao acontecendo esses análise de..., ligação e executar e nem imagino o que esta provocando isso no log do banco. Jorge, Você utiliza Hibernate ou algo do gênero? É comum alguns profissionais habilitarem no Hibernate a opção para utilizar PreparedStatement e ele trata isto globalmente. []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://www.postgresql.org.br http://www.rnp.br/keyserver/pks/lookup?search=0x8F3E3C06D428D10A ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] pg_migrator
Boa tarde, pessoal. Alguém pode me indicar um manual para usar o pg_migrator no Windows 2008? Obrigado! At.te, Alisson Viegas Acsiv Sistemas ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Procedure que envia um udp.
Ola. Pessoal, eu tenho o seguinte script em perl : / #!/usr/bin/env perl use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr = 'localhost', PeerPort = '7070', Proto = 'udp', ); die Could not create socket: $!\n unless $sock; print $sock $1; close($sock); / Alguem sabe se este script pode virar um stored procedure no postgresql. Ou entao, como fazer um /system call /de dentro de uma procedure chamando este meu script perl. Muito 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] pg_migrator
2009/8/11 Alisson Viegas li...@acsiv.com.br: Alguém pode me indicar um manual para usar o pg_migrator no Windows 2008? Você já leu os arquivos README, INSTALL e IMPLEMENTATION que fazem parte do pacote? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] BLOQUEIO DE REGISTRO
Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Saiu a grade oficial do PGCon Brasil 2009
Sim senhores, é verdade! Basta conferir em http://pgcon.postgresql.org.br/2009/programacao.php. Para quem estiver disposto a dar uma mãozinha na divulgação, segue o texto abaixo: []s Fábio Telles --- X --- A Unicamp já se prepara para receber a “3ª Conferência Brasileira de PostgreSQL” ou simplesmente PGCon Brasil 2009. Nos dias 23 e 24 de outubro, centenas de estudantes e profissionais de TI participarão do maior evento latino-americano sobre o mais poderoso sistema gerenciador de banco de dados de código livre do mundo, o PostgreSQL. A programação completa[1] da Conferência já foi confirmada. O evento contará com palestras, tutoriais e os já consagrados Hacker Talks e Lightning Talks. Estarão presentes desenvolvedores nacionais do PostgreSQL como Euler Taveira e Francisco Figueiredo Jr, internacionais como Bruce Momjian, Magnus Hagander além de profissionais reconhecidos no Brasil como Fernando Ike, Roberto Mello, Leandro Dutra entre outros. Na programação, estarão temas como as últimas novidades da versão 8.4 do PostgreSQL, técnicas de monitoramento, segurança, ajustes de desempenho e muito mais. Mais informações sobre o evento, podem ser obtidas no site oficial em: http://pgcon.postgresql.org.br/2009/index.php [1] http://pgcon.postgresql.org.br/2009/programacao.php ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] BLOQUEIO DE REGISTRO
Olá, Vamos lá. Deixa eu ver se entendi o seu problema. O registro que está bloqueado você não quer que o mesmo seja lido é isso? 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! Por que o registro aqui não pode ser lido? O PostgreSQL não bloqueia operações de leitura, bloqueia operações de escrita como update e delete. Por exemplo, se o registro tivesse sido modificado na sessão a o PostgreSQL na sessão B iria ler o valor antigo antes da atualização porque a mesma não foi efetivada (commit). Por exemplo: Para ficar mais claro, criei uma tabela chamada tab e contém 10 registros, com valores de 1 a 10. CREATE TABLE tab(codigo int); INSERT INTO tab VALUES (generate_series(1,10)); SESSAO A: BEGIN; SELECT * FROM tab WHERE codigo=1; UPDATE tab SET codigo=100 WHERE codigo=1; --Vá para a SESSAO B; COMMIT; SESSAO B: BEGIN; SELECT * FROM tab WHERE codigo=1; --Aqui você verá o registro 1 pois a transação (SESSAO A) que modificou este registro ainda não foi efetivada. O registro de código 100 só será visível aqui se for executado o comando commit na sessão anterior. COMMIT; Agora você conseguirá ver o registro atualizado nesta sessão. Sua idéia era acontecer o que quando você tentasse ler o registro alterado na SESSAO A? E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Espero ter ajudado. Qualquer dúvida pergunta ai. []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] BLOQUEIO DE REGISTRO
Em SQLServer, fiz um teste parecido com o seu. Qdo vc faz um lock de registro ou trabela, ele nao bloqueia a leitura de outras sessoes, ate' que a sessao de posse do lock, faça um update de algum dado do registro. Para bloquear o select que vc fez, faca em seguida um update com a mesmo where assim : db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; update tab_material set codg_serma='10' where codg_serma='10' ; teste la e depois envie o resultado. até mais. MIGUEL JOSE DE LIMA wrote: Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ 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] Procedure que envia um udp.
2009/8/11 Mário Oshiro mario.osh...@gmail.com Ola. Pessoal, eu tenho o seguinte script em perl : / #!/usr/bin/env perl use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr = 'localhost', PeerPort = '7070', Proto = 'udp', ); die Could not create socket: $!\n unless $sock; print $sock $1; close($sock); Não conheço muito de perl mas creio que um bom começo seria: create or replace function open_socket() returns void as $$ use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr = 'localhost', PeerPort = '7070', Proto = 'udp', ); die Could not create socket: $!\n unless $sock; print $sock $1; close($sock); return; $$ language plperlu; Também uma olhada em [1] pode ser útil. [1] http://www.postgresql.org/docs/8.4/interactive/plperl.html -- Fabrízio de Royes Mello Blog sobre PostgreSQL: 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] Procedure que envia um udp.
Olá, Você pode usar a PL/Perl para trabalhar com isso no PostgreSQL. Para isso basta adicionar a linguagem PL/Perl ao banco desejado. Seria bom você executar o seguinte comando: pg_config --configure A partir deste comando você verifica as opções passadas ao banco no momento da compilação, assim você verá se você tem suporte para a criação de funções em PL/Perl. Você deve-se atentar ao parâmetro --with-perl, ele deve estar habilitado. Obs: Isso você deve executar se você compilou o PostgreSQL. 2009/8/11 Mário Oshiro mario.osh...@gmail.com Ola. Pessoal, eu tenho o seguinte script em perl : / #!/usr/bin/env perl use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr = 'localhost', PeerPort = '7070', Proto = 'udp', ); die Could not create socket: $!\n unless $sock; print $sock $1; close($sock); / Alguem sabe se este script pode virar um stored procedure no postgresql. Ou entao, como fazer um /system call /de dentro de uma procedure chamando este meu script perl. Muito Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] BLOQUEIO DE REGISTRO
Oi Mário, Este é o problema a leitura nunca é bloqueada. Fiz os testes pedidos, mas para mim não mudou nada! Veja: - Na sessão 1: db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where codg_serma='10'; UPDATE 1 db_teste=# *** aguardando novo comando *** - Na sessão 2: db_teste=# BEGIN WORK; BEGIN db_teste=# SELECT * FROM tab_material where codg_serma='10'; codg_empr | codg_serma | id_serma | desc_serma ---++++--+-- 202 | 10 | 202010 | LAPIS Y| É isso ai!!!?? Obrigado. 2009/8/11 Mário Oshiro mario.osh...@gmail.com Em SQLServer, fiz um teste parecido com o seu. Qdo vc faz um lock de registro ou trabela, ele nao bloqueia a leitura de outras sessoes, ate' que a sessao de posse do lock, faça um update de algum dado do registro. Para bloquear o select que vc fez, faca em seguida um update com a mesmo where assim : db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; update tab_material set codg_serma='10' where codg_serma='10' ; teste la e depois envie o resultado. até mais. MIGUEL JOSE DE LIMA wrote: Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ 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
Re: [pgbr-geral] BLOQUEIO DE REGISTRO
Olá, Miguel Já comentei no email anterior e fiz uma pequena descrição de como isso funciona. Você deu uma olhada no exemplo que mandei? O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita (UPDATE e DELETE). 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br Oi Mário, Este é o problema a leitura nunca é bloqueada. Fiz os testes pedidos, mas para mim não mudou nada! Veja: - Na sessão 1: db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where codg_serma='10'; UPDATE 1 db_teste=# *** aguardando novo comando *** - Na sessão 2: db_teste=# BEGIN WORK; BEGIN db_teste=# SELECT * FROM tab_material where codg_serma='10'; codg_empr | codg_serma | id_serma | desc_serma ---++++--+-- 202 | 10 | 202010 | LAPIS Y| É isso ai!!!?? Obrigado. 2009/8/11 Mário Oshiro mario.osh...@gmail.com Em SQLServer, fiz um teste parecido com o seu. Qdo vc faz um lock de registro ou trabela, ele nao bloqueia a leitura de outras sessoes, ate' que a sessao de posse do lock, faça um update de algum dado do registro. Para bloquear o select que vc fez, faca em seguida um update com a mesmo where assim : db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; update tab_material set codg_serma='10' where codg_serma='10' ; teste la e depois envie o resultado. até mais. MIGUEL JOSE DE LIMA wrote: Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ 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 []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] BLOQUEIO DE REGISTRO
Miguel, boa noite... Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem opções, onde para retornar logo que está ocupado utilize NOWAIT. Att, 2009/8/11 JotaComm jota.c...@gmail.com Olá, Miguel Já comentei no email anterior e fiz uma pequena descrição de como isso funciona. Você deu uma olhada no exemplo que mandei? O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita (UPDATE e DELETE). 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br Oi Mário, Este é o problema a leitura nunca é bloqueada. Fiz os testes pedidos, mas para mim não mudou nada! Veja: - Na sessão 1: db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where codg_serma='10'; UPDATE 1 db_teste=# *** aguardando novo comando *** - Na sessão 2: db_teste=# BEGIN WORK; BEGIN db_teste=# SELECT * FROM tab_material where codg_serma='10'; codg_empr | codg_serma | id_serma | desc_serma ---++++--+-- 202 | 10 | 202010 | LAPIS Y| É isso ai!!!?? Obrigado. 2009/8/11 Mário Oshiro mario.osh...@gmail.com Em SQLServer, fiz um teste parecido com o seu. Qdo vc faz um lock de registro ou trabela, ele nao bloqueia a leitura de outras sessoes, ate' que a sessao de posse do lock, faça um update de algum dado do registro. Para bloquear o select que vc fez, faca em seguida um update com a mesmo where assim : db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; update tab_material set codg_serma='10' where codg_serma='10' ; teste la e depois envie o resultado. até mais. MIGUEL JOSE DE LIMA wrote: Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ 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 []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Charly Frankl http://javadevilopers.blogspot.com/ charlyfra...@gmail.com Linux user #391083 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Registros Estimados/ Registros Contados
Olá Robinson! Aqui na nossa empresa utilizamos PostgreSQL versões 8.3.7 e 8.4.0. Se fala da propriedade que aparece no pgAdminIII (usamos versão 1.8.4) denominada Registros (contados)? Por acaso ela fica com o valor não contados? Aqui é assim também. É normal. Att Chiqueti 2009/8/10 Robinson robinsonbsi...@gmail.com: Bom dia Senhores(as): Após um problemão enfrentado na versão 8.1, onde deu crash em minha base de dados( http://listas.postgresql.org.br/pipermail/pgbr-geral/2009-July/016576.html ), finalmente consegui migrar para a versão 8.4. Até o momento está tudo rodando bem, apenas um item chamou minha atenção. Ao fazer manutenção no BD, eu percebi que algumas tabelas não atualizam o parâmetro registros contatos, apenas o estimado está OK. Alguém sabe se isso é uma mal sinal?? Desde já agradeço pela atençã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] BLOQUEIO DE REGISTRO
Olá, Leandro Acho que você resumiu bem a questão. Apenas um comentário, quando falei do PostgreSQL é que estamos falando do PostgreSQL, porém concordo com você que o conceito é de SQL e não especificamente do PostgreSQL. Derrepente não me expressei bem. 2009/8/11 Leandro Henrique Pereira Neto leandro-henrique.pere...@serpro.gov.br Pelo que conheço não é uma questão do PostgreSQL e sim de bancos padrão SQL, pelo menos nos mais populares (SqlServer, Oracle, MySQL, PostgreSQL e DB2). O SELECT simples nunca é bloqueado (somente se usar for update). Porém usar todos os SQL com FOR UPDATE pode travar todo o seu sistema rapidinho já que somente uma transação poderá ler os dados de cada vez, como em sistema OLTP temos normalmente mais leitura do que alteração a coisa acaba ficando complicada. O que tem são os conceitos de transação e de consistência de leitura. Talvez seja o caso de você pensar o sistema em temos de bancos SQL e não tentar fazer no PostgreSQL o que um banco como o Adabas faz pois estruturas de funcionamento e implementação totalmente diferentes. Leandro Henrique Pereira Neto Administração de bancos de dados Charly Frankl escreveu: Miguel, boa noite... Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem opções, onde para retornar logo que está ocupado utilize NOWAIT. Att, 2009/8/11 JotaComm jota.c...@gmail.com Olá, Miguel Já comentei no email anterior e fiz uma pequena descrição de como isso funciona. Você deu uma olhada no exemplo que mandei? O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita (UPDATE e DELETE). 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br Oi Mário, Este é o problema a leitura nunca é bloqueada. Fiz os testes pedidos, mas para mim não mudou nada! Veja: - Na sessão 1: db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where codg_serma='10'; UPDATE 1 db_teste=# *** aguardando novo comando *** - Na sessão 2: db_teste=# BEGIN WORK; BEGIN db_teste=# SELECT * FROM tab_material where codg_serma='10'; codg_empr | codg_serma | id_serma | desc_serma ---++++--+-- 202 | 10 | 202010 | LAPIS Y| É isso ai!!!?? Obrigado. 2009/8/11 Mário Oshiro mario.osh...@gmail.com Em SQLServer, fiz um teste parecido com o seu. Qdo vc faz um lock de registro ou trabela, ele nao bloqueia a leitura de outras sessoes, ate' que a sessao de posse do lock, faça um update de algum dado do registro. Para bloquear o select que vc fez, faca em seguida um update com a mesmo where assim : db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; update tab_material set codg_serma='10' where codg_serma='10' ; teste la e depois envie o resultado. até mais. MIGUEL JOSE DE LIMA wrote: Caros, participantes... Sou iniciante neste mundo do PostgreSQL. Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME), mas me incubiram de fazer testes no PostgreSQL para bloquer registros. Então... Estou precisando de ajuda para bloquear a leitura de um registro, ou seja, em um cenário como: Atualização de Estoque de um Material : Antes de atualizar o estoque do material selecionado eu preciso bloquear o registro para que nenhuma outra sessão possa obter o dado do registro. PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA. Estou usando o PostgreSQL 8.3.7 para os testes - em linux Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não esteja entendendo...??? Fiz o seguinte teste via psql: - Na Sessão A db_teste=# BEGIN WORK; BEGIN db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE; resultado obtido ok! *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) - como ex. fiz de apenas 1 (um). - Na Sessão B: ** Fiz o mesmo SELECT sem a clausula FOR UPDATE: SELECT * FROM tab_material where codg_serma='10' ** aqui eu obtive o resultado ok da leitura. Portanto, é aqui, neste ponto que não deveria permitir nenhuma leitura, já que sessão A ainda não terminou! E AI ALGUÉM PODE ME AJUDAR!? Obrigado! ___ 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
Re: [pgbr-geral] Procedure que envia um udp.
O Perl esta instalado corretamente no banco. Eu cosigo gerar procedures que manipulam strings e acessam o banco. meu problema que nao sei como carregar a biblioteca use IO::Socket. JotaComm wrote: Olá, Você pode usar a PL/Perl para trabalhar com isso no PostgreSQL. Para isso basta adicionar a linguagem PL/Perl ao banco desejado. Seria bom você executar o seguinte comando: pg_config --configure A partir deste comando você verifica as opções passadas ao banco no momento da compilação, assim você verá se você tem suporte para a criação de funções em PL/Perl. Você deve-se atentar ao parâmetro --with-perl, ele deve estar habilitado. Obs: Isso você deve executar se você compilou o PostgreSQL. 2009/8/11 Mário Oshiro mario.osh...@gmail.com mailto:mario.osh...@gmail.com Ola. Pessoal, eu tenho o seguinte script em perl : / #!/usr/bin/env perl use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr = 'localhost', PeerPort = '7070', Proto = 'udp', ); die Could not create socket: $!\n unless $sock; print $sock $1; close($sock); / Alguem sabe se este script pode virar um stored procedure no postgresql. Ou entao, como fazer um /system call /de dentro de uma procedure chamando este meu script perl. Muito Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com http://www.dextra.com.br/postgres ___ 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] Procedure que envia um udp.
2009/8/11 Mário Oshiro mario.osh...@gmail.com: O Perl esta instalado corretamente no banco. Eu cosigo gerar procedures que manipulam strings e acessam o banco. meu problema que nao sei como carregar a biblioteca use IO::Socket. Mário, não sei nada de perl, mas creio que o que tu precisa ver é se está usando a versão correta de PL/Perl. Creio teria de ser a versão Untrusted, Que vai permitir acessar fora do processo(do Postgres). Segundo a página http://www.postgresql.org/docs/8.3/interactive/plperl-trusted.html: In general, the operations that are restricted are those that interact with the environment. This includes file handle operations, require, and use (for external modules). Depois disso, talvez seja preciso ver se essa biblioteca está ao alcance do Postgres. Talvez seja preciso editar as variáveis de ambiente do postgres. Infelizmente não disse nada preciso, mas espero ao menos conseguir dar algum norte. Daniel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral