Articles of upsert

Upserting em access ao MS

Eu preciso escrever uma consulta SQL para o MS-Access 2000 para que uma linha seja atualizada se existir, mas inserida se não existir. (Eu acredito que isso é chamado de “upsert“) ou seja Se a linha existe … UPDATE Table1 SET (…) WHERE Column1=’SomeValue’ Se não existe … INSERT INTO Table1 VALUES (…) Isso pode […]

SQLite INSERT – ON DUPLICATE KEY UPDATE

O MySQL tem algo parecido com isto: INSERT INTO visits (ip, hits) VALUES (‘127.0.0.1’, 1) ON DUPLICATE KEY UPDATE hits = hits + 1; Tanto quanto eu sei que esse recurso não existe no SQLite, o que eu quero saber é se existe alguma maneira de arquivar o mesmo efeito sem ter que executar duas […]

MongoDB: sub-documento upsert

Eu tenho documentos que se parecem com isso, com um índice exclusivo em bars.name : { name: ‘foo’, bars: [ { name: ‘qux’, somefield: 1 } ] } . Quero atualizar o subdocumento em que { name: ‘foo’, ‘bars.name’: ‘qux’ } e $set: { ‘bars.$.somefield’: 2 } , ou crie um novo sub-documento com { […]

Oracle: como UPSERT (atualizar ou inserir em uma tabela?)

A operação UPSERT atualiza ou insere uma linha em uma tabela, dependendo se a tabela já tiver uma linha que corresponda aos dados: if table t has a row exists that has key X: update t set mystuff… where mykey=X else insert into t mystuff… Como a Oracle não possui uma instrução UPSERT específica, qual […]

SELECT ou INSERT está em uma function propensa a condições de corrida?

Eu escrevi uma function para criar posts para um simples mecanismo de blogging: CREATE FUNCTION CreatePost(VARCHAR, TEXT, VARCHAR[]) RETURNS INTEGER AS $$ DECLARE InsertedPostId INTEGER; TagName VARCHAR; BEGIN INSERT INTO Posts (Title, Body) VALUES ($1, $2) RETURNING Id INTO InsertedPostId; FOREACH TagName IN ARRAY $3 LOOP DECLARE InsertedTagId INTEGER; BEGIN — I am concerned about […]

Como faço para atualizar se existe, insira se não (AKA “upsert” ou “merge”) no MySQL?

Existe uma maneira fácil de INSERT uma linha quando ela não existe, ou de UPDATE se ela existe, usando uma consulta MySQL?

SQLite – UPSERT * não * INSERT ou REPLACE

http://en.wikipedia.org/wiki/Upsert Inserir atualização do procedimento armazenado no SQL Server Existe alguma maneira inteligente de fazer isso no SQLite que eu não tenha pensado? Basicamente eu quero atualizar três de quatro colunas, se o registro existir, se não existir, quero INSERIR o registro com o valor padrão (NUL) para a quarta coluna. O ID é uma […]

Soluções para INSERT OR UPDATE no SQL Server

Suponha uma estrutura de tabela de MyTable(KEY, datafield1, datafield2…) . Muitas vezes, quero atualizar um registro existente ou inserir um novo registro, se ele não existir. Essencialmente: IF (key exists) run update command ELSE run insert command Qual é a melhor maneira de escrever isso?

Inserir, em atualização duplicada no PostgreSQL?

Vários meses atrás eu aprendi com uma resposta no Stack Overflow como executar várias atualizações de uma vez no MySQL usando a seguinte syntax: INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z) ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2); Agora mudei para o PostgreSQL e aparentemente isso não […]