Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:UNICO, ma DEFAULT NULL - consentito dalla creazione della tabella. È consentito inserire più di 1 NULL. Come mai?

Secondo la specifica SQL 92 (e come la leggi) i vincoli univoci hanno lo scopo di denotare chiavi candidate e quindi non dovrebbero consentire valori duplicati valori NULL. DB2 implementa i propri vincoli univoci in questo modo. Più di alcuni fornitori di database (incluso MySQL) leggono la specifica come se ignorasse i valori NULL proprio come la clausola Group By ignora i valori NULL e quindi implementano vincoli univoci tali da applicarsi solo a valori non NULL. Altri ancora, trattano il NULL come il proprio valore speciale e consentono solo una voce che è NULL. Microsoft SQL Server implementa vincoli univoci in questo modo. L'unico aspetto coerente tra tutti i fornitori rispetto ai vincoli univoci è che i valori non NULL devono essere univoci.