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

    Mal funzionamento di un vincolo di integrità

    Salve a tutti. Ho un problema: ho un campo "pemail" di tipo VARCHAR(8) nella tabella di un database MySQL, specifico un vincolo d'integrità CHECK in modo che specificare che il campo dovrà assumere solo 3 valori: "public", "register", "private". Il problema è che quando vado a fare una insert e nel campo pemail specifico un valore diverso dai tre specificato nel vincolo, non viene lanciato alcun errore, e quindi viene salvato qualsiasi valore ignorando il vincolo! Ma perchè?

    Ecco la dichiarazione della colonna:

    pemail VARCHAR(8) CHECK(pemail = 'public' OR pemail = 'register' OR pemail = 'private')

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Non puoi fare un campo enum coi valori da te scelti e fare un controllo prima dell'insert?

  3. #3

    Re: Mal funzionamento di un vincolo di integrità

    Originariamente inviato da Dreamer89
    ...specifico un vincolo d'integrità CHECK...ignorando il vincolo! Ma perchè?
    tratto da:
    http://dev.mysql.com/doc/refman/5.0/...ate-table.html
    The CHECK clause is parsed but ignored by all storage engines.

  4. #4

    Re: Re: Mal funzionamento di un vincolo di integrità

    Originariamente inviato da MacApp
    tratto da:
    http://dev.mysql.com/doc/refman/5.0/...ate-table.html
    Scusa ma non ho capito. Puoi essere più chiaro? Perchè il vincolo non funziona?

  5. #5
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    traduco: la clausula CHECK viene compilata ma ignorata
    quindi se la usi non ti segnala errore ma non compie il controllo...a sto punto perchè l'hanno messa? in previsione di modifiche future?

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  6. #6
    Ho notato che anche NOT NULL viene ignorata... cioè se durante una insert lascio vuoto un campo che era stato dichiarato col vincolo NOT NULL, tutto va lisco.

    Ora vado via di testa -.-

  7. #7
    NOT NULL significa che il campo non puo' essere NULL, non che non puo' essere vuoto.

  8. #8
    Originariamente inviato da k.b
    NOT NULL significa che il campo non puo' essere NULL, non che non puo' essere vuoto.
    Se è così allora non ne comprendo l'utilità...

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.