jest konieczne zadeklarowanie ograniczeń "NOT NULL" dla kluczy podstawowych w bazie danych MySQL? Klucz podstawowy nie może mieć wartości NULL, ponieważ mimo to auto_increments i automatycznie wypełnia rekord pola. Czy mam rację mówiąc, że to oznacza, że mogę usunąć ograniczenie "NOT NULL" dla moich kluczy podstawowych?MySQL - Czy dla kluczy podstawowych są wymagane ograniczenia "NOT NULL"?
Odpowiedz
(Jak już zostało oznaczone twoje pytanie mysql
.) W MySQL nie musisz tego robić jawnie. Od the manual:
PRIMARY KEY
to unikatowy indeks, gdzie wszystkie kolumny klucza musi być zdefiniowany jakoNOT NULL
. Jeśli nie są jawnie zadeklarowane jakoNOT NULL
, MySQL deklaruje je tak niejawnie (i cicho).
Oczywiście, tylko dlatego, że nie mająnie znaczy, że nie może chcieć dla jasności itp
Nie tylko deklaruje kolumny PK jako 'NOT NULL', ale wyrównuje je nadpisując/modyfikuje je do' NOT NULL', jeśli zostały zadeklarowane jako 'NULL'. –
Tak i nie Można usunąć „NULL”, że nie usunie jednak ograniczenia. Osobiście zostawiłbym je, nie zyskujesz nic wartego, by je zabrać.
Nie, nie możesz. Jeśli kolumna jest częścią Klucza podstawowego, ograniczenie Nie Null nie może zostać zmienione na Null. –
@ypercube Nie powiedział "zmień na NULL", powiedział "remove NOT NULL". Tylko dlatego, że NOT NULL nie znajduje się w tekście DDL, nie oznacza, że nie obowiązuje. –
@Branko: Jeśli miał na myśli "usunąć sformułowanie" NOT NULL "z definicji", tak, zgadzam się. Czytając ponownie, masz rację, to prawdopodobnie miało oznaczać. –
Klucz główny nie może zawierać kolumn z zerownikiem. auto_increment
nie jest ograniczeniem sprawdzającym (jest to raczej ograniczenie domyślne), więc nie można usunąć not null
z definicji kolumny, która jest częścią klucza podstawowego, niezależnie od obecności auto_increment
. Nie musisz wpisywać not null
podczas tworzenia tabeli dla klucza podstawowego w mysql, ponieważ silnik dodaje to ograniczenie automatycznie.
Nie musimy jawnie zadeklarować, że kolumna nie jest pusta, ponieważ ograniczenie klucza głównego sprawia, że kolumna NOT NULL. Sprawdziłem w Oracle.
- 1. Czy są wymagane unikalne ograniczenia dla DB?
- 2. Django lub podobne dla kompozytowych kluczy podstawowych
- 3. Jakie są ograniczenia implementacji Klastra NDB MySQL?
- 4. Doktryna - tabela bez kluczy podstawowych
- 5. Łatwe pytanie mysql dotyczące kluczy podstawowych i wkładki
- 6. NHibernate wiele podstawowych kluczy mapujących
- 7. Jak zapobiegać Sequelize z włożeniem NULL dla kluczy podstawowych z PostgreSQL
- 8. Kiedy nie używać zastępczych kluczy podstawowych?
- 9. Ograniczenia kluczy (indeksów) tablic asocjacyjnych PHP?
- 10. Ograniczenia MySQL i Check
- 11. Jakie zespoły są wymagane dla MVC4?
- 12. Czy są jakieś ograniczenia sprzętowe dla pakietu Nokia Imaging SDK?
- 13. SQLite kwerendy do znalezienia kluczy podstawowych
- 14. Czy zdarzenia.EventEmitter.call (this) są wymagane podczas tworzenia niestandardowego EventEmitter?
- 15. kluczy obcych i MySQL Błędy
- 16. obiekty factory_boy wydają się brakować kluczy podstawowych
- 17. Deklaracja SQLAlchemy: tabela bez kluczy podstawowych?
- 18. Czy ciągi lub int są preferowane dla kluczy obcych?
- 19. Używanie DbUnit z tabelami, które nie mają kluczy podstawowych
- 20. Podstawy kluczy obcych w MySQL?
- 21. Jak sprawdzić, czy mysql wraca null/empty
- 22. Co stanie się, gdy w silniku DB zabraknie liczb do użycia dla kluczy podstawowych?
- 23. Czy klucz obcy wskazujący PK wymaga ograniczenia NOT NULL?
- 24. są powiązania zestawu ignorowane dla PublicKeyToken = null?
- 25. Jakie są odpowiednie zalety/ograniczenia Amazon RDS vs. EC2 z MySQL?
- 26. Czy standardowe pliki tekstowe są zakończone NULL?
- 27. MySql złożone klucze i wartości null
- 28. Zobacz wszystkie ograniczenia klucza obcego dla całej bazy danych MySQL
- 29. Używanie dwóch kluczy obcych jako klucza podstawowego - MySQL
- 30. postgres: Sprawdź ograniczenia i wartości null
Posiadanie ich w kolumnie _nie robi krzywdy_, a odczytanie definicji tabeli powoduje, że rzeczy stają się wyjątkowe. Jeśli w przyszłości zmienisz ograniczenie klucza podstawowego, nadal będziesz mieć ograniczenie "NOT NULL". – Oded
Masz dwa splecione pojęcia, których nie powinieneś mieć. Klucz podstawowy nie musi być kolumną automatycznej inkrementacji, ani (jeśli tabela ma taką) musi być kolumną automatyczną inkrementującą klucz podstawowy. Tylko dlatego, że * mają tendencję do używania razem, nie oznacza, że są one tym samym. –