Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558

    [MySQL] Scambio valori su campo UNIQUE

    Sto lavorando su una tabella con un campo UNIQUE che deve restare tale, ma ho bisogno di un operazione che scambi i valori di questo campo tra due record.

    In pratica in pseudo-codice:
    s = record[1][campounique]
    record[1][campounique] = record[2][campounique]
    record[2][campounique] = record[1][campounique]

    Ma ovviamente non posso farlo poiché alla seconda istruzione duplicherei il valore del campo UNIQUE. C'è un query che può scambiare i due valori, senza dover fare roba con valori temporanei ecc...?

  2. #2

    Re: [MySQL] Scambio valori su campo UNIQUE

    Originariamente inviato da JoeP
    Sto lavorando su una tabella con un campo UNIQUE che deve restare tale, ma ho bisogno di un operazione che scambi i valori di questo campo tra due record.

    In pratica in pseudo-codice:
    s = record[1][campounique]
    record[1][campounique] = record[2][campounique]
    record[2][campounique] = record[1][campounique]

    Ma ovviamente non posso farlo poiché alla seconda istruzione duplicherei il valore del campo UNIQUE. C'è un query che può scambiare i due valori, senza dover fare roba con valori temporanei ecc...?
    non sarebbe piu' unique.... e poi credo che copiare un record per scrivere in un altro record dello stesso campo e nella stessa tabella sia una di quelle cose che non si possano fare, a prescindere dall'unique. Cioe' con lo stesso target di tabella.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558

    Re: Re: [MySQL] Scambio valori su campo UNIQUE

    Originariamente inviato da piero.mac
    non sarebbe piu' unique.... e poi credo che copiare un record per scrivere in un altro record dello stesso campo e nella stessa tabella sia una di quelle cose che non si possano fare, a prescindere dall'unique. Cioe' con lo stesso target di tabella.
    Forse mi sono spiegato male.

    Praticamente, da questa situazione:
    codice:
    |ID | CAMPI VARI | CAMPO UNIQUE
    |3  | Blablabla  | 20
    |4  | Frufrufru  | 45
    Devo scambiare i due valori del campo UNIQUE, passando a:
    codice:
    |ID | CAMPI VARI | CAMPO UNIQUE
    |3  | Blablabla  | 45
    |4  | Frufrufru  | 20

  4. #4
    ti eri spiegato benissimo.

    non si puo' copiare un campo di un record in un altro record della stessa tabella. Non si puo' fare insert, update e anche il delete. Questo a prescindere dall'indice unique.

    Puoi copiare un campo su altro campo NELLO STESSO record ma non tra record differenti. Lo potresti fare creando una tabella temporanea su cui copiare i dati da trascrivere, ma rimarrebbe poi ancora il vincolo dell'indice UNIQUE.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Ok, ho capito che intendi...
    Allora magari la cosa migliore sarebbe iniziare una TRANSACTION, sciogliere il vincolo di unicità, legger/modificare i due record con un paio di SELECT e UPDATE, e poi rimettere il vincolo e chiudere la transazione...

  6. #6
    Originariamente inviato da JoeP
    Ok, ho capito che intendi...
    Allora magari la cosa migliore sarebbe iniziare una TRANSACTION, sciogliere il vincolo di unicità, legger/modificare i due record con un paio di SELECT e UPDATE, e poi rimettere il vincolo e chiudere la transazione...
    anche senza toccare l'indice:

    1) leggi i dati da spostare (id-valore1, id-valore2)
    2) azzeri il campo di valore1.
    3) aggiorni il campo di valore2 con valore1
    4) aggiorni il campo ex-valore1 con valore2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Originariamente inviato da piero.mac
    anche senza toccare l'indice:
    2) azzeri il campo di valore1.
    Sì, è vero, posso impostarlo a NULL, così "aggiro" l'unique...
    Grazie mille per tutto l'aiuto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.