è necessario dichiarare vincoli "NOT NULL" per chiavi primarie nel database MySQL? Una chiave primaria non può avere valori NULL perché comunque auto_incrementi e riempie automaticamente il record del campo. Quindi ho ragione nel dire che posso rimuovere il vincolo "NOT NULL" per le mie chiavi primarie?MySQL - I vincoli "NOT NULL" sono necessari per le chiavi primarie?
risposta
(Come hai codificato la tua domanda mysql
.) In MySQL, non devi farlo esplicitamente. Da the manual:
Un
PRIMARY KEY
è un indice univoco in cui tutte le colonne chiave devono essere definiti comeNOT NULL
. Se non vengono dichiarati esplicitamente comeNOT NULL
, MySQL li dichiara così implicitamente (e silenziosamente).
Naturalmente, solo perché non fare hanno a non significa che potrebbe non voler per chiarezza, ecc
Non solo dichiara le colonne PK come 'NOT NULL', ma sovrascrive le modifiche/le modifica a' NOT NULL' se sono state dichiarate come 'NULL'. –
Sì e no è possibile rimuovere "Not Null", che tuttavia non rimuoverà il vincolo. Personalmente li lascerei entrare, non ottieni nulla di utile dal portarli fuori.
No, non puoi. Se una colonna fa parte della chiave primaria, il vincolo Not Null non può essere modificato in null. –
@ypercube Non ha detto "cambia in NULL", ha detto "rimuovi NOT NULL". Solo perché NOT NULL non è nel testo DDL non significa che non sia in vigore. –
@Branko: Se intendeva "rimuovere la dicitura" NOT NULL "dalla definizione", sì, sono d'accordo. Leggendo ancora, hai ragione, probabilmente è questo che intendeva dire. –
La chiave primaria non deve includere colonne nullable. auto_increment
non è un vincolo di controllo, (è piuttosto un vincolo predefinito), quindi non è possibile rimuovere not null
dalla definizione della colonna che fa parte della chiave primaria indipendentemente dalla presenza di auto_increment
. Non è necessario digitare not null
durante la creazione della tabella per la chiave primaria in mysql, poiché il motore aggiunge automaticamente questo vincolo.
Non è necessario dichiarare esplicitamente la colonna come non null poiché il vincolo della chiave primaria rende la colonna NOT NULL. Ho controllato in Oracle.
- 1. Due colonne come chiavi primarie in mysql?
- 2. interrogazione SQLite per trovare le chiavi primarie
- 3. mysql chiavi primarie illimitate incremento automatico
- 4. come riutilizzare le chiavi primarie cancellate in mysql?
- 5. Convenzioni di denominazione dei vincoli delle chiavi primarie NHibernate
- 6. Quali sono le chiavi esterne MySQL?
- 7. SQL Chiavi esterne multiple come chiavi primarie
- 8. Ordinamento chiavi primarie
- 9. Devo indicizzare le colonne di chiavi primarie in Oracle
- 10. Indici e l'utilizzo di chiavi primarie come indici in MySQL
- 11. qualcuno può spiegarmi cosa fanno effettivamente le chiavi primarie?
- 12. sql scambia i valori delle chiavi primarie
- 13. Inserimento di record con chiavi primarie autoincrementanti
- 14. @OneToMany e chiavi primarie composite?
- 15. NHibernate mappatura chiavi primarie multiple
- 16. Chiavi primarie con Apache Spark
- 17. Doctrine - Tabella senza chiavi primarie
- 18. Solr DIH delta-import con le chiavi primarie composte?
- 19. Implementazione di uno standard di denominazione per chiavi, indici, vincoli
- 20. SQL: cosa fanno esattamente le chiavi primarie e gli indici?
- 21. Quali sono i requisiti per le chiavi AWS OpsWorks SSH?
- 22. Come si usano gli elementi di un dataframe come le chiavi hash/i tasti del dizionario/le chiavi primarie?
- 23. ordinamento unix, con chiavi primarie e secondarie
- 24. Chiavi primarie e esterne in pgAdmin
- 25. Per gli sviluppatori che utilizzano mongodb per creare le proprie app Web, cosa si fa per le lunghe chiavi primarie?
- 26. L'archivio di chiavi/valori persistente distribuito più semplice che supporta le query dell'intervallo di chiavi primarie
- 27. Progettazione database - convenzioni di denominazione delle chiavi primarie
- 28. Non ci sono chiavi primarie o candidato nella tabella di riferimento
- 29. Progettazione database e l'utilizzo di chiavi primarie non numeriche
- 30. Postgres e indici su chiavi esterne e chiavi primarie
Averli sulla colonna _non fa male_ e quando legge la definizione della tabella rende le cose _esplicite_. Se, in futuro, modifichi il vincolo della chiave primaria, avresti comunque il vincolo 'NOT NULL'. – Oded
Hai due concetti intrecciati che non dovresti avere. Una chiave primaria non deve necessariamente essere una colonna autoincrementante, né (se una tabella ne ha una) una colonna autoincrementante deve essere la chiave primaria. Solo perché * tendono * ad essere usati insieme non significa che siano la stessa cosa. –