sintassi corretta di upsert con postgresql 9.5, sotto query mostra l'errore column reference "gallery_id" is ambiguous
, perché?Come fare correttamente upsert in postgres 9.5
var dbQuery = `INSERT INTO category_gallery (
category_id, gallery_id, create_date, create_by_user_id
) VALUES ($1, $2, $3, $4)
ON CONFLICT (category_id)
DO UPDATE SET
category_id = $1,
last_modified_date = $3,
last_modified_by_user_id = $4
WHERE gallery_id = $2`;
ho cercato il cambiamento WHERE gallery_id = $2;
-WHERE category_gallery.gallery_id = $2;
poi mostra errore there is no unique or exclusion constraint matching the ON CONFLICT specification
, ma non voglio impostare gallery_id o category_id come unico becuase Voglio che entrambi colonna sono gli stessi, allora faccio aggiornamento ....
Come eseguire correttamente upsert in postgres 9.5?
se ON CONFLICT
ha bisogno di una colonna univoca, dovrei usare un altro metodo, come?
voglio a sicuro a più colonne sia conflitto poi fare l'aggiornamento, che cosa è l'uso corretto
var dbQuery = `INSERT INTO category_gallery (
category_id, gallery_id, create_date, create_by_user_id
) VALUES ($1, $2, $3, $4)
ON CONFLICT (category_id, gallery_id)
DO UPDATE SET
category_id = $1,
last_modified_date = $3,
last_modified_by_user_id = $4
WHERE gallery_id = $2`;
var dbQuery = `INSERT INTO category_gallery (
category_id, gallery_id, create_date, create_by_user_id
) VALUES ($1, $2, $3, $4)
ON CONFLICT (category_id AND gallery_id)
DO UPDATE SET
category_id = $1,
last_modified_date = $3,
last_modified_by_user_id = $4
WHERE gallery_id = $2`;
tavolo (category_id, non gallery_id colonna unica)
category_id | gallery_id | create_date | create_by_user_id | last_modified_date | last_modified_by_user_id
1 | 1 | ...
1 | 2 | ...
2 | 2 | ...
1 | 3 | ...
grazie per la risposta, ma non voglio category_id o gallery_id essere colonna unica, menzione in questione. Voglio che se category_id e gallery_id siano entrambi uguali, allora crea una nuova riga, per favore vedi il mio esempio di data di aggiornamento nella domanda – user1575921
wow, grazie! Mi fraintendimento, lo proverò ora – user1575921
sì se già esiste 'category_id = 1 e gallery_id = 3' quindi aggiorna, non inserisci. Io uso il tuo script, se voglio aggiornare 'category_id = 2 dove gallery_id = 3' non funziona. o dovrei aggiungere un altro script di aggiornamento? – user1575921