W wielu smakach SQL istnieją trzy sposoby niejawnego ustawienia kolumny na wartość NULL przy każdym wstawieniu wiersza. SąKolumny MySQL z domyślnym null - wyborem stylistycznym, czy też?
columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL
czyli pierwsza ustawia flagę NULL (w przeciwieństwie do not null), drugi pozostawia flagę NULL do wartości domyślnej, a trzeci ustawia flagę NULL i ustawia wartość niejawnego jako ZERO.
Słyszałem o tym, jak w Microsoft SQL, druga odmiana nie jest dokładnie taka sama, ponieważ można również dostosować domyślną wartość flagi NULL dla tabel lub schematów.
Jednak dla MySQL nie sądzę, że istnieje taka funkcja. Ponadto w MySQL kolumny z flagą NULL, w odróżnieniu od kolumn NOT NULL, zawsze są domyślnie ustawione na wartość NULL na insert, jeśli nie ma jawnej wartości, nawet jeśli włączony jest tryb ścisły. Pozostawia to wszystkie te deklaracje kolumn identyczne.
W moim skrypcie MySQL, dla każdej kolumny NOT NULL, określam wartość DEFAULT dla kolumn, których nie oczekuję w niektórych wstawkach w mojej aplikacji, aby uniknąć problemów, gdybym włączał tryb ścisły. Dlatego uważam, że byłbym bardziej symetryczny, gdybym wybrał trzecią odmianę, mimo że jest ona najbardziej gadatliwa i jednoznaczna. Czy deklaracje takie jak trzecia zmiana są częste, czy pierwsza czy druga odmiana występuje częściej w skryptach innych osób?
Zastanawiam się, przechylając się do drugiego podejścia, ponieważ jest to alias, którego używa zrzut MySQL, ale nie jestem pewien, czy to dobry pomysł, ponieważ zrzuca on również liczby całkowite jako ciągi (pojedyncze cudzysłowy) w klauzulach domyślnych deklaracji kolumn. .
To pytanie może wydawać się być bardziej opiniotwórcze niż takie, które ma rozwiązanie, ale chcę też mieć świadomość potencjalnych problemów, których nie jestem świadomy. Mogę zdecydować się na migrację z MySQL do PostgreSQL w przyszłości, a także mogę skorzystać z porady tych ekspertów, np. jeśli PostgreSQL rozróżnia te przypadki, tak jak robi to MS-SQL. Popraw mnie, jeśli się mylę, jeśli podałem nieprawidłowe założenia.
Nie jestem pewien, czy jesteś świadomy, ale w MySQL możesz ustawić domyślną wartość (która nie jest pusta) dla kolumny z zerowością. Jeśli nie podasz wartości dla tej kolumny podczas wstawiania, kolumna ma wartość domyślną. Można również jawnie określić, że należy wstawić wartość null, w którym to przypadku kolumna ma wartość null. Na przykład możesz określić kolumnę jako "SMALLINT DEFAULT 3". Następnie, jeśli jawnie wstawisz niepustą wartość całkowitą, przechowuje ona tę wartość; jeśli wstawisz null jawnie, przechowuje on wartość null; a jeśli nie określisz wartości podczas wstawiania, to zapisze 3, wartość domyślną. – Hammerite
tak! Martwię się tylko o kolumny, które mają domyślną wartość null. –
Być może to pytanie jest bardziej odpowiednie dla [programmer.se]? – eggyal