Visualizzazione risultati 1 fino 4 di 4

Discussione: REPLACE... quando?

  1. #1
    Guest

    Predefinito REPLACE... quando?

    Il mio problema è circa la sintassi SQL del costrutto REPLACE.
    Come posso aggiungere una clausola limitante (tipo WHERE o HAVING per select)?

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Per modificare dei record già presenti, non devi usare REPLACE ma UPDATE:
    Codice:
    UPDATE NomeTabella
    SET Campo1 = NuovoValore1, Campo2 = NuovoValore2, ...
    WHERE ... (condizioni di selezione)
    REPLACE serve a questo: ti permette di fare un inserimento-sostituzione con una sola query. Se specifichi infatti una chiave già presente, i valori associati vengono sostituiti, in caso contrario viene aggiunto il record...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Per modificare dei record già presenti, non devi usare REPLACE ma UPDATE:
    Codice:
    UPDATE NomeTabella
    SET Campo1 = NuovoValore1, Campo2 = NuovoValore2, ...
    WHERE ... (condizioni di selezione)
    REPLACE serve a questo: ti permette di fare un inserimento-sostituzione con una sola query. Se specifichi infatti una chiave già presente, i valori associati vengono sostituiti, in caso contrario viene aggiunto il record...

    Stammi bene...
    In pratica REPLACE prende come WHERE la chiave primaria?

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da wider Visualizza messaggio
    In pratica REPLACE prende come WHERE la chiave primaria?
    Non esattamente... considera la REPLACE come una "scorciatoia" per queste tre query (in realtà sono due quelle eseguite):
    Codice:
    --- prima query
    SELECT * FROM NomeTabella WHERE Id = TestingId
    
    --- se la query non ha risultati, puoi inserire il record con il nuovo Id
    INSERT INTO NomeTabella (Id, AltriCampi) VALUES (TestingId, AltriValori)
    
    --- se la query ha risultati, esegui l'aggiornamento
    UPDATE NomeTabella SET AltriCampi = AltriValori WHERE Id = TestingId
    Queste due/tre query le puoi fare in un sol colpo con una REPLACE:
    Codice:
    REPLACE INTO NomeTabella (Id, AltriCampi) VALUES (TestingId, AltriValori)
    Inoltre, dato che la sintassi di REPLACE è la stessa di INSERT, puoi fare questo test più volte con una sola query:
    Codice:
    REPLACE INTO NomeTabella (Id, AltriCampi) VALUES
       (TestingId1, AltriValori1),
       (TestingId2, AltriValori2),
       ...
       (TestingIdN, AltriValoriN)
    In questo caso, il test sopra viene fatto per ogni TestingId specificato: se risulta già presente, i valori di AltriCampi saranno reimpostati su AltriValori. In caso contrario, il record viene inserito con TestingId e AltriValori specificati, e gli altri campi specificati sui valori di default (o NULL se non è definito un default).

    Spero di averti risposto... stammi bene...
    Ultima modifica di dementialsite : 31-01-2008 alle ore 11.47.40
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •