Em 10/10/11, Shander Lyrio<shan...@nucleo45.com.br> escreveu:
> 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?
>


Talvez ele queira dizer:
INSERT ... ON DUPLICATE KEY UPDATE
do MySQL
http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

ou do Oracle:
http://download.oracle.com/docs/cd/E14072_01/server.112/e10592/statements_9016.htm

ou do DB2:
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0010873.htm

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a