2013-03-04 9 views
7

Devo controllare se esiste una riga o meno. Se non esiste, dovrebbe essere inserito.Se una riga non esiste inserire altro non inserire in postgres

Questo è in postgres e sto cercando di inserire una riga attraverso uno script di shell. Quando eseguo lo script non mostra errori, ma non viene inserito nella tabella anche se non è presente alcuna riga corrispondente.

+6

si prega di inviare la sceneggiatura che si sta utilizzando e la dichiarazione che si sta utilizzando per verificare se v'è "nessuna riga corrispondente". – Aushin

+1

Vedere questo link http://stackoverflow.com/questions/4555966/merge-syntax-used-to-upsert-or-insert-on-duplicate-update – Kuberchaun

+0

se puoi usare Ruby come linguaggio di scripting, puoi provare [ 'Upsert'] (https://github.com/seamusabshere/upsert) –

risposta

21

mi piace la soluzione accennano here

INSERT INTO table (id, field, field2) 
     SELECT 3, 'C', 'Z' 
     WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3); 
+0

Ho provato questa soluzione e non funziona come una versione inferiore. Quindi, ho voluto dividerli entrambi in due diverse domande. – JumpOffBox

+0

Ora Postgres ha anche un comando Upsert in cui è possibile inserire O aggiornare una riga: https://wiki.postgresql.org/wiki/UPSERT –

+0

Su 9.5+, 'INSERIRE ... SU CONFLITTO NON FARE 'o' INSERIRE ... ON CONFLICT UPDATE' https://stackoverflow.com/a/17267423/1386245 – Rohmer

Problemi correlati