|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
|
[SQL] Update o Inserimento in sole 2 query
Salve ragazzi, vorrei risolvere una questione in un determinato modo. Mi spiego: ho una tabella nella quale devo aggiornare, se esiste, una determinata riga; se invece non esiste, la devo aggiungere.
prendiamo per esempio la seguente tabella, con una riga già presente Codice:
key value
riga1 1 10
query 1) UPDATE tabella SET value = 10 WHERE key = 1 poi utilizzo la funzione affected_rows per vedere se è stato modificato qualcosa. quindi, se è stato modificato qualcosa, ok; se invece non è stato modificato niente, devo fare un INSERT. a questo punto sorge un problema. quindi, un pò di pseudo codice: Codice:
eseguo query 1
if ( affected_rows )
ok
else
INSERT
A questo punto si entra nell'else dove viene fatto un inserimento, ma giustamente con errore perchè mi da un duplicato di chiave. Come risolvere in sole 2 query? è possibile? oppure dentro l'else devo fare una select per controllare che quella tupla non esista già prima di fare l'insert??? io vorrei evitare proprio questo.... oppure ancora, è possibile gestire l'errore che mi da php quando faccio l'insert con un valore di chiave duplicato??? Spero di essermi spiegato, grazie a tutti!!!!
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri Ultima modifica di AMD_GO : 13-12-2010 alle 16:32. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
|
nessuno nessuno che mi aiuta??
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
I vincoli di integrità
Chiave primaria, o chiave unica. Codice:
ON DUPLICATE KEY UPDATE |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2006
Città: Prov.Cagliari
Messaggi: 1583
|
Quote:
Tuttavia la clausola Codice:
ON DUPLICATE KEY UPDATE
__________________
MB: ASUS Prime x570-P - CPU: AMD Ryzen 9 3900x with Arctic Liquid Freezer II 240 - Memorie: G.Skill Ripjaws DDR4 2x16GB 3200 - HDs: Samsung 970 EVO plus and Crucial P2 1TB - Ali: Seasonic Focus GX-650 - Video: AMD Asus GTX770 Direct CU II - Concluso Positivamente con : M@x27, mirco2034, max x2, relativo, Mighty Max e tanti altri |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:35.




















