Visualizzazione risultati 1 fino 14 di 14

Discussione: [mysql] Si può fare l'update di un campo primary key?

  1. #1
    Guest

    Predefinito [mysql] Si può fare l'update di un campo primary key?

    Come da titolo.

    Ho una tabella che ha diversi campi, tra cui uno primary key..

    Se faccio un update di un record, tutti i valori vengono tranquillamente cambiati, ma non il campo che è primary key della tabella..

    Non c'è modo di modificarlo? Devo per forza fare delete + insert?

  2. #2
    Guest

    Predefinito

    Prima di tutto dovresti vedere se mysql ti restituisce degli errori sull'update.
    Ad ogni modo i valori delle primary key possono essere modificati a patto che:
    1) non sia già presente il valore per il quale vuoi fare l'update
    2) non ci sia qualche vincolo imposto dall'integrità referenziale ovvero la tua primary key non deve essere una primary key anche su altre tabelle

    se utilizzi l'engine MyIsam la seconda opzione non la devi considerare perché il MyIsam non prevede l'integrità referenziale

    Ciao

  3. #3
    Guest

    Predefinito

    Per intenderci, è una tabella dove vi sono tutti gli utenti registrati al sito.

    Ogni utente ha un suo ID.

    Se faccio un update del record del tizio, ne modifico TUTTI i valori (compreso l'ID), tutti i valori vengono cambiati (così come volevo io), tranne l'ID.

    Ovviamente l'id è un id diverso da tutti gli altri.

    mysql_error() non mi restituisce nessun errore, come se invece update avvenisse senza problemi..

  4. #4
    Guest

    Predefinito

    Bho, a me funziona perfettamente.
    Forse provi ad eseguire l'update trattando il campo come numerico anzichè come stringa?
    Posta la query che usi, così vediamo.


    Ciaooo!!

  5. #5
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Probabilmente hai inserito un ID incrementale
    In quel caso non puoi modificarlo, solo cancellare e inserire.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  6. #6
    Guest

    Predefinito

    Intendi auto_increment?
    No, anche in quel caso io da phpmyadmin riesco a farlo, e d'altra parte, non vedo perchè non dovrebbe essere così.


    Ciao!

  7. #7
    Guest

    Predefinito

    Si esatto.. è un id autoincrementale... bho?.. a me non funziona...

    Anche altrove in rete ho visto di gente che aveva il mio problema, ma risolveva con delete +insert..

  8. #8
    Guest

    Predefinito

    Hai provato a farlo direttamente da un programma tipo phpmyadmin?
    Come detto sopra, puoi postare la query?


    Ciao!!!!!!

  9. #9
    Guest

    Predefinito

    Ecco la query:
    Codice:
     $update = mysql_query("UPDATE $tabella_users SET userid='$userid', user_name = '$user_name' , 
    							first_name = '$first_name', 
    							last_name = '$last_name', 
    							WHERE userid=$userid");
    Con phpmyadmin non funziona nemmeno ma questo potrebbe essere perche l'utlima versione di phpmyadmin ha qualche bug...

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Con quella query assegni al campo userid il valore di $userid se il campo userid è uguale a $userid. Per forza non ti cambia il valore, gli assegni sempre lo stesso che ha già.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

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

    Predefinito

    Ci credo che non funzioni l'aggiornamento dell'ID, sei proprio tu a dire di non modificarlo con quella query... o meglio, cerchi un record con un particolare ID (clausola WHERE), poi reimposti vari campi del record assegnando a ID lo stesso valore che hai cercato.

    Dovresti quindi modificare la query usando due variabili diverse, che naturalmente ti dovrai calcolare prima:
    Codice:
    $update = mysql_query("UPDATE $tabella_users SET userid='$nuovo_id', user_name = '$user_name' , 
    							first_name = '$first_name', 
    							last_name = '$last_name', 
    							WHERE userid=$id_attuale");
    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...

  12. #12
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Citazione Originalmente inviato da debug
    Intendi auto_increment?
    No, anche in quel caso io da phpmyadmin riesco a farlo, e d'altra parte, non vedo perchè non dovrebbe essere così.
    Ciao!
    In SQLserver e penso anche altri DB non si può fare (solo forzando alcuni paramentri)
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da binarysun
    In SQLserver e penso anche altri DB non si può fare (solo forzando alcuni paramentri)
    Ripeto, io in mysql riesco a farlo. Gli altri tipi di db non li conosco.


    Ciaoooo!!!

  14. #14
    Guest

    Predefinito

    Oddio.. che idiota.. Avete ragione perdonatemi..

    Che castronata..

Regole di scrittura

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