Ho una tabella con 4 colonne. Voglio essere in grado di INSERIRE o AGGIORNARE la colonna dei valori durante la creazione (non mi interessa l'ID delle righe degli indici).MySQL - Creare un indice UNIQUE su due colonne per ON DUPLICATE KEY
CREAT TABLE tablename (
id, (primary)
user_id, (index)
setting_id, (index)
value (index)
);
Originariamente stavo per eseguire una query "REPLACE INTO ..." ogni volta che volevo salvare un valore. Ma poi ho read about the problems e invece ho scelto INSERT INTO ... ON DUPLICATE KEY UPDATE.
Il problema è che non ho una singola colonna per "INSERIRE SU ON DUPLICATE KEY UPDATE" da usare per capire se questa è una nuova riga o se c'è una riga esistente che deve essere aggiornato.
così ho pensato che avrei usato una chiave univoca che era un mix delle due colonne che hanno reso questa riga unica (
CREATE UNIQUE INDEX index_name ON table(user_id, setting_id);
Tuttavia, non sono sicuro di come avanzare da qui. Come fare I strutturare le mie domande di controllare questo nuovo indice quando si cerca di capire una riga esiste già con questi due valori delle colonne
INSERT INTO `tablename` (value, user_id, setting_id) VALUES (1,34,15) ON DUPLICATE KEY UPDATE
:? EDIT:
rimuovendo l'ID primario lea colonna ving only (setting_id, user_id, & value) Sono stato in grado di creare un indice PRIMARY su (setting_id, user_id) e quindi ha funzionato la seguente query. more help here.
INSERT INTO tablename (user_id, setting_id, value)
VALUES (42, 1, 12)
ON DUPLICATE KEY UPDATE value = 12