Em 10/10/2011 20:08, Tiago Adami escreveu:
> Ok, mas imagine que há outra aplicação conectada ao banco de dados e
> insere um registro. Como o aplicativo (persistência) saberá que o
> objeto existe no banco, mas não na memória?

        Isto é uma limitação da sua aplicação, linguagem, ou de sua escolha do 
ORM.

        Veja esta query que meu ORM SqlAlchemy gera e que eu postei em mensagem 
imediatamente anterior:

insert into clientes(chaveprimaria, cliente)
values(nextval('chaveprimaria'), ?) returning chaveprimaria;

        Não importa de onde venha a inclusão, nunca haverá repetição de chave 
primária nem erro na inserção pois o próprio PostgreSql retornará um 
inteiro com o valor da sequence utilizado para persistir o objeto.

> Certa vez já tive que fazer _quase_ isso para simular o comando
> "MERGE" de outro SGBD, e não tive outra opção a não ser criar um
> programa que tentasse inserir, e no caso de violação da PK tratava o
> erro em código fazia um UPDATE.

        Merge de um SGDB? Qual SGDB faz merge e como funciona isso? Está 
falando de juntar os dados de dois bancos de dados em um único? O que 
isto tem haver com ORM?

        Abraço,

--
Shander Lyrio
http://about.me/shander
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a