Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySQL] inserimento valore NULL in campo auto_increment

    Salve a tutti,
    ho una tabella con il campo id settato su "auto_increment" e altri campi.
    In passato per inserire valori nella tabella usavo un comando sql del tipo:
    INSERT INTO nometabella VALUES ('','dato1','dato2','dato3')
    cioè usavo una stringa vuota ('') per il campo id.
    Oggi sul mio server locale questo comando non funziona più, per farlo andare devo sostituire la stringa vuota con NULL.
    E' un comportamento normale? Perché questa variazione rispetto al passato?

    Grazie.

  2. #2

    Re: [MySQL] inserimento valore NULL in campo auto_increment

    Originariamente inviato da blowUp78
    Salve a tutti,
    ho una tabella con il campo id settato su "auto_increment" e altri campi.
    In passato per inserire valori nella tabella usavo un comando sql del tipo:
    INSERT INTO nometabella VALUES ('','dato1','dato2','dato3')
    cioè usavo una stringa vuota ('') per il campo id.
    Oggi sul mio server locale questo comando non funziona più, per farlo andare devo sostituire la stringa vuota con NULL.
    E' un comportamento normale? Perché questa variazione rispetto al passato?

    Grazie.
    Succede a causa del variato settaggio di SQL-MODE. Auto increment e' numerico mentre un empty tra apici '' e' una stringa vuota. Quindi o tralasci il campo (e quindi sara' considerato un valore di default) oppure metti NULL. In alternativa cambi il settaggio di sql-mode. settato strict mode considera un errore tentare di inserire una stringa in un campo numerico. Lo stesso discorso vale anche se cerchi di inserire un numero tra apici in un campo numerico.

    vedi al proposito l'articolo di luca200
    http://database.html.it/guide/lezion...e-di-mysql-ii/

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

  3. #3
    Grazie, ho capito.
    Mi dici che è possibile tralasciare il valore, ma se io uso:
    INSERT INTO nometabella VALUES (,'dato1','dato2','dato3')
    non mi funziona ugualmente...

  4. #4
    Originariamente inviato da blowUp78
    Grazie, ho capito.
    Mi dici che è possibile tralasciare il valore, ma se io uso:
    INSERT INTO nometabella VALUES (,'dato1','dato2','dato3')
    non mi funziona ugualmente...
    certo che no. Se lasci vuota la lista dei campi i dati che andrai ad inserire dovranno esserci sempre tutti, altrimenti come diavolo farebbe a sapere a quale campo si riferiscono i values????

    lista campi parziale = inserimento campi parziale nello stesso ordine dei campi elencati.
    lista campi assente = tutti i valori dei campi elencati nell'ordine che fisicamente sono presenti nella struttura della tabella.

    nel tuo caso:

    INSERT INTO nometabella dato1, dato2, dato3 VALUES ('dato1', 'dato2', 'dato3')

    oppure

    INSERT INTO nometabella VALUES (NULL, 'dato1', 'dato2', 'dato3')

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

  5. #5
    Ora mi è chiaro.
    Di nuovo grazie.

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.