Re: [pgbr-geral] Update ou select

2015-08-19 Por tôpico Dickson S. Guedes
Em 19 de agosto de 2015 00:28, Danilo Silva
danilo.dsg.go...@gmail.com escreveu:
 Pessoal,

 Considerando:
 pedido | item
  1|  ABC
  1|  XYZ
  2|  XPTO

 Tenho uma rotina de integração onde, para cada item do pedido, eu preciso
 indicar o recebimento do pedido, sendo efetuado um update na tabela de
 pedidos dizendo que aquele pedido foi recebido.

 Terei que utilizar uma trigger para isso e a minha dúvida é:
 Para cada insert na tabela de itens efetuar o update da tabela de pedidos
 OU
 Para cada insert na tabela de itens, fazer um select na tabela de pedidos
 para saber se o pedido já foi recebido, e caso não tenha sido recebido,
 efetuar o update.

 Creio que efetuar o select antes será melhor para evitar os buracos que o
 update causa e assim diminuir as ações do autovacuum na tabela de pedidos.

Não respondendo diretamente sua pergunta mas apenas salientando que você
pode testar no próprio UPDATE, antes de fazer o SELECT, algo como:

UPDATE pedidos SET recebido = true WHERE codigo_pedido = XYZ AND
NOT recebido;

Senão você teria que fazer um SELECT FOR UPDATE para tentar evitar
race-condition em
ambientes com concorrẽncia.

[]s
-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://github.com/guedes - http://guedesoft.net
http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Update ou select

2015-08-19 Por tôpico Danilo Silva
Em 19 de agosto de 2015 09:13, Dickson S. Guedes lis...@guedesoft.net
escreveu:

 Em 19 de agosto de 2015 00:28, Danilo Silva
 danilo.dsg.go...@gmail.com escreveu:
  Pessoal,
 
  Considerando:
  pedido | item
   1|  ABC
   1|  XYZ
   2|  XPTO
 
  Tenho uma rotina de integração onde, para cada item do pedido, eu preciso
  indicar o recebimento do pedido, sendo efetuado um update na tabela de
  pedidos dizendo que aquele pedido foi recebido.
 
  Terei que utilizar uma trigger para isso e a minha dúvida é:
  Para cada insert na tabela de itens efetuar o update da tabela de pedidos
  OU
  Para cada insert na tabela de itens, fazer um select na tabela de pedidos
  para saber se o pedido já foi recebido, e caso não tenha sido recebido,
  efetuar o update.
 
  Creio que efetuar o select antes será melhor para evitar os buracos
 que o
  update causa e assim diminuir as ações do autovacuum na tabela de
 pedidos.

 Não respondendo diretamente sua pergunta mas apenas salientando que você
 pode testar no próprio UPDATE, antes de fazer o SELECT, algo como:

 UPDATE pedidos SET recebido = true WHERE codigo_pedido = XYZ AND
 NOT recebido;

 ​Putz, é verdade, caraca esqueci que posso fazer desta forma, deve ter
sido o horário :)
​Valeu...

[]s
Danilo​
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

[pgbr-geral] Update ou select

2015-08-18 Por tôpico Danilo Silva
Pessoal,

Considerando:
pedido | item
 1|  ABC
 1|  XYZ
 2|  XPTO

Tenho uma rotina de integração onde, para cada item do pedido, eu preciso
indicar o recebimento do pedido, sendo efetuado um update na tabela de
pedidos dizendo que aquele pedido foi recebido.

Terei que utilizar uma trigger para isso e a minha dúvida é:
Para cada insert na tabela de itens efetuar o update da tabela de pedidos
OU
Para cada insert na tabela de itens, fazer um select na tabela de pedidos
para saber se o pedido já foi recebido, e caso não tenha sido recebido,
efetuar o update.

Creio que efetuar o select antes será melhor para evitar os buracos que o
update causa e assim diminuir as ações do autovacuum na tabela de pedidos.

[]s
Danilo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral