Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    7

    campi NULL e NOT null "uguali" Phpmyadmin

    Salve,
    stò creando un database con phpmyadmin utilizzando una chiave primaria autoincrementale per un campo (id) e duer campi impostati con chiavi UNIQUE entrambi impostati su l'opzione NOT NULL. Purtroppo la chiave UNICA non funziona perchè posso inserire valori duplicati e nemmeno il campo NOT NULL perchè posso anche non inserire nulla nel campo, i dati vengono salvati anche senza contenre nulla.
    Ho trovato questo link su Bugs.Mysql http://bugs.mysql.com/bug.php?id=36346 dove hanno c'è lo stesso problema ma senza nessuna soluzione, sapreste aiutarmi ?


  2. #2
    occhio che 'NULL' tra apici e' una stringa, e '' (apici vuote) e' pure lui una stringa "vuota"

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

  3. #3
    se togli l'estensione .th. forse si riesce a vedere l'immagine.

    comunque hai fatto UN indice UNIQUE usando DUE campi .... dovresti fare DUE indici UNIQUE da un campo.

    e comunque sono campi NOT NULL ....

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    7
    ciao, ma io non "scrivo" nulla. Utilizzando phpmyadmin ho una casella a discesa impostata per default su NOT NULL, quindi non posso sbagliare.
    Come posso dire a phpmyadmin che senza qualcosa in quel campo non deve accettare il record ?

  5. #5
    Originariamente inviato da grahac
    ciao, ma io non "scrivo" nulla. Utilizzando phpmyadmin ho una casella a discesa impostata per default su NOT NULL, quindi non posso sbagliare.
    Come posso dire a phpmyadmin che senza qualcosa in quel campo non deve accettare il record ?
    non capisco piu' quello che vuoi fare. Un database mette nei campi quello che gli dici di mettere. Sei tu che devi controllare "PRIMA" che cio' che stai per inserire corrisponda a quello che vuoi sia ammissibile inserire.

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    7
    scusa piero credo che ctiamo imbrogliando.
    Allora faccio un passo indietro. Io vorrei creare un database in cui:
    la prima colonna si incrementerà automaticamente ad ogni nuovo record inserito
    la seconda e terza colonna dovranno essere obbligatorie per cui è esplicito che dovranno contenere nelle proprietà NOT NULL e i lori valori nei record dovranno essere unici.

    Quindi ho pensato di creare il db in questo modo:

    CREATE TABLE `cliente` (
    `idcli` int(3) unsigned NOT NULL auto_increment,
    `codcli` int(5) NOT NULL default '0',
    `ragsoccli` varchar(20) NOT NULL default '',
    PRIMARY KEY (`idcli`),
    UNIQUE KEY `codcli` (`codcli`,`ragsoccli`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

    il problema nasce però quando io inserisco un valore duplice e il db lo accetta (non dovrebbe visto chè la chiave è UNICA) e quando io non inserisco nulla in uno dei due campi (visto che ho il NOT NULL)

    Invece dalle prove fatto non è così in quanto posso inserire valori uguali e mancanti

    INSERT INTO `cliente` (`idcli`, `codcli`, `ragsoccli`) VALUES
    (1, 0, ''),
    (2, 1, ''),
    (3, 0, '1'),
    (4, 0, '2');

    Spero di essere stato più chiaro ora, grazie

    PS scusa per la foto ho sbagliato a copiare il link

  7. #7
    Originariamente inviato da grahac

    INSERT INTO `cliente` (`idcli`, `codcli`, `ragsoccli`) VALUES
    (1, 0, ''),
    (2, 1, ''),
    (3, 0, '1'),
    (4, 0, '2');

    Spero di essere stato più chiaro ora, grazie
    ripeto. Hai creato UN SOLO indice UNIQUE formato da DUE campi. L'univocita' quindi SI ESTENDE ai due campi. Infatti i dati che inserisci sono tutti UNIVOCI.

    prova ad inserire:

    (1, 0, ''),
    (2, 1, ''),
    (3, 0, '1'),
    (4, 0, '2'),
    (5, 0, ''),
    (6, 1, ''),
    (7, 0, '1'),
    (8, 0, '2');

    e vedrai che la "malfunzione" smettera' di essere considerata tale.

    rimuovi l'indice UNIQUE e creane DUE, uno per campo.

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    7
    Oh porca paletta :berto:
    s :berto: ei un grande ! non avevo fatto caso all'unione delle due colonne. Grazie mille.
    Adesso l'unico neo che ho è la funzione UNIQUE che accetta record NULL, anche se nelle proprietà del campo c'è NOT NULL. Posso risolvere questo problema in altro modo ?

  9. #9
    Originariamente inviato da grahac
    Oh porca paletta :berto:
    s :berto: ei un grande ! non avevo fatto caso all'unione delle due colonne. Grazie mille.
    Adesso l'unico neo che ho è la funzione UNIQUE che accetta record NULL, anche se nelle proprietà del campo c'è NOT NULL. Posso risolvere questo problema in altro modo ?
    Ora dobbiamo metterci d'accordo su cosa intendi per record NULL.

    perche' siano NULL i campi devono essere dichiarati NULL.... quando un campo e' NULL non esiste. Invece "NULL" esiste e vale come stringa.

    insert .... values ('NULL') <---- stringa

    insert .... values (NULL) <----- questo e' un NULL

    ma il campo deve poterlo accettare.

    Un campo vuoto NON e' NULL, ma un campo vuoto che esiste.

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

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    7
    sera,
    allora io per un campo NOT NULL, intendo un campo OBBLIGATORIAMENTE da inserire. Ricordo che io utilizzo phomyadmin dove ho la possibilità di scegliere tramite un menù a discesa NIENTE, NOT NULL, NULL. Quindi non posso dichiarare altro.

    Temporaneamente ho risolto memorizzando un record senza alcun valore, in questo modo se nel campo non inserisco nulla (e intendo nulla, scyusate il gioco di parole) il db fornisce errore perchè dice che il campo è duplice, avendo settato precedentemente anche la chiave UNIQUE.

    ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.