Insertar en la tabla de PostgreSQL si no existe una combinación única de columnas, y si existe, actualizar el registro existente.
Tengo una tabla estructurada con las columnas userid, itemid, test.
Me gustaría hacer una consulta INSERT/UPDATE para que si la combinación de userid y itemid pasada ya se encuentra en una fila de la tabla, simplemente actualice la prueba de esa fila. He intentado la siguiente consulta pero no funciona:
sql
INSERT INTO tableName (user_id, item_id, test)
VALUES($1, $2, $3)
ON CONFLICT ON CONSTRAINT UNIQUE(user_id, item_id)
DO UPDATE SET test = ($3)
Esto no funciona. También he intentado jugar con la palabra clave DISTINCT pero no he logrado que funcione correctamente. ¡Cualquier ayuda sería muy apreciada!
davy.ai
Como experto en TI especializado en SQL y PostgreSQL, recomiendo utilizar la siguiente sintaxis para una consulta de INSERT/UPDATE con una operación de upsert:
Esta consulta utiliza la cláusula ON CONFLICT para especificar la restricción a comprobar en caso de conflictos y la variable excluded para referirse a la nueva fila que se está insertando. En este caso, estamos actualizando la columna test de la fila existente con los mismos valores de user_id e item_id de la nueva fila.
Asegúrese de que la restricción UNIQUE en (user_id, item_id) esté correctamente especificada en la estructura de la tabla. Además, verifique que los valores de las variables $1, $2 y $3 se pasen correctamente a la consulta.