Articles of upsert

Come usare RETURNING con ON CONFLICT in PostgreSQL?

Ho il seguente UPSERT in PostgreSQL 9.5: INSERT INTO chats (“user”, “contact”, “name”) VALUES ($1, $2, $3), ($2, $1, NULL) ON CONFLICT(“user”, “contact”) DO NOTHING RETURNING id; Se non ci sono conflitti restituisce qualcosa di simile a questo: ———- | id | ———- 1 | 50 | ———- 2 | 51 | ———- Ma se […]

Come eseguire un UPSERT in modo da poter utilizzare sia nuovi che vecchi valori nella parte di aggiornamento

Stupido ma semplice esempio: supponiamo di avere una tabella “Item” in cui conservo i totali degli articoli che ricevono. Item_Name Items_In_Stock Il nome dell’articolo è la chiave principale qui. Come raggiungere il seguente quando mai ricevo l’articolo A in quantità X. Se l’articolo non esiste, inserisco un nuovo object registrato per l’articolo A e imposta […]

Upserting in accesso MS

Devo scrivere una query SQL per MS-Access 2000 in modo che una riga venga aggiornata se esiste, ma inserita se non lo è. (Credo che questo si chiami “upsert“) vale a dire Se la riga esiste … UPDATE Table1 SET (…) WHERE Column1=’SomeValue’ Se non esiste … INSERT INTO Table1 VALUES (…) Questo può essere […]

SQLite INSERT – ON DUPLICATE KEY UPDATE

MySQL ha qualcosa del genere: INSERT INTO visits (ip, hits) VALUES (‘127.0.0.1′, 1) ON DUPLICATE KEY UPDATE hits = hits + 1; Per quanto ne so, questa caratteristica non esiste in SQLite, quello che voglio sapere è se c’è un modo per archiviare lo stesso effetto senza dover eseguire due query. Inoltre, se questo non […]

MongoDB: upsert sub-document

Ho documenti che assomigliano a qualcosa del genere, con un indice univoco su bars.name : { name: ‘foo’, bars: [ { name: ‘qux’, somefield: 1 } ] } . Voglio aggiornare il sub-documento dove { name: ‘foo’, ‘bars.name’: ‘qux’ } e $set: { ‘bars.$.somefield’: 2 } , o crea un nuovo sotto-documento con { name: […]

Oracle: come UPSERT (aggiornare o inserire in una tabella?)

L’operazione UPSERT aggiorna o inserisce una riga in una tabella, a seconda che la tabella abbia già una riga che corrisponde ai dati: if table t has a row exists that has key X: update t set mystuff… where mykey=X else insert into t mystuff… Poiché Oracle non ha una specifica dichiarazione UPSERT, qual è […]

SELEZIONA o INSERISCI in una funzione soggetta a condizioni di gara?

Ho scritto una funzione per creare post per un semplice motore di 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 […]

Come posso aggiornare se esiste, inserire se non (AKA “upsert” o “unire”) in MySQL?

C’è un modo semplice per INSERT una riga quando non esiste, o per UPDATE se esiste, utilizzando una query MySQL?

SQLite – UPSERT * not * INSERT o REPLACE

http://en.wikipedia.org/wiki/Upsert Inserisci Aggiorna stored proc su SQL Server C’è un modo intelligente per farlo in SQLite a cui non ho pensato? Fondamentalmente voglio aggiornare tre delle quattro colonne se il record esiste, se non esiste voglio INSERIRE il record con il valore predefinito (NUL) per la quarta colonna. L’ID è una chiave primaria, quindi ci […]

Come UPSERT (MERGE, INSERT … ON DUPLICATE UPDATE) in PostgreSQL?

Una domanda molto frequente qui è come fare un upsert, che è ciò che MySQL chiama INSERT … ON DUPLICATE UPDATE e lo standard supporta come parte dell’operazione MERGE . Dato che PostgreSQL non lo supporta direttamente (prima di pg 9.5), come si fa? Considera quanto segue: CREATE TABLE testtable ( id integer PRIMARY KEY, […]