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