Kolumny z domyślną wartością to pola wypełniane ustaloną wartością przy braku jawnego wskazania podczas wstawiania danych.
Jak działa wartość domyślna w kolumnie tabeli
Kolumna z domyślną wartością ma przypisaną regułę DEFAULT. Reguła ta określa, jaka wartość zostanie użyta wtedy, gdy instrukcja wstawiająca rekord nie poda wartości dla tej kolumny. Mechanizm działa na poziomie definicji tabeli, dlatego nie trzeba powtarzać tej samej wartości w każdym zapytaniu aplikacji. Przykładowo kolumna przechowująca status może otrzymywać wartość 'nowy', jeżeli podczas tworzenia rekordu pominięto pole statusu.
Wartość domyślna nie jest tym samym co wartość wpisana do każdej istniejącej komórki podczas tworzenia tabeli. Jest regułą stosowaną przy obsłudze nowych wierszy. Jej działanie zależy od instrukcji INSERT oraz od tego, czy kolumna dopuszcza wartość NULL. Jeżeli kolumna ma wartość domyślną i nie jest wymagana w zapytaniu, baza może automatycznie uzupełnić ją zgodnie z ustaloną definicją.
Pominięcie kolumny, NULL i jawne użycie DEFAULT
Podczas wykonywania INSERT pominięcie kolumny zwykle oznacza, że system bazodanowy powinien zastosować jej wartość domyślną, o ile taka reguła istnieje. Nie należy jednak utożsamiać pominięcia pola z wpisaniem NULL. NULL oznacza brak znanej albo ustalonej wartości, natomiast wartość domyślna jest konkretnym wynikiem reguły, na przykład liczbą zero, tekstem 'aktywny' albo wartością wyliczoną przez funkcję.
W SQL można również wskazać słowo kluczowe DEFAULT jawnie dla kolumny, zamiast pozostawić ją poza listą wartości. Dzięki temu zapytanie wyraźnie informuje, że ma zostać użyta reguła z definicji tabeli. W praktyce ma to znaczenie przy rozbudowanych instrukcjach wstawiania, importach oraz kodzie generowanym przez biblioteki aplikacyjne. Jeżeli kolumna ma ograniczenie NOT NULL, a nie ma wartości domyślnej, pominięcie jej podczas dodawania rekordu może zakończyć się błędem naruszenia wymaganej wartości.
Stałe, funkcje i kontrola spójności danych
Domyślna wartość może być stałą dopasowaną do typu kolumny, ale w wielu systemach bazodanowych może również wynikać z wyrażenia lub funkcji obsługującej bieżącą datę i czas. W kolumnie daty utworzenia często stosuje się wartość generowaną przy dodawaniu rekordu. W kolumnie liczbowej można zdefiniować zero, jeżeli oznacza ono brak naliczonej wartości, ale taka decyzja powinna wynikać z modelu danych, a nie z wygody zapisu.
Reguła DEFAULT nie zastępuje wszystkich innych ograniczeń tabeli. Nie sprawdza sama z siebie, czy tekst ma właściwy format, czy liczba mieści się w dozwolonym zakresie albo czy wartość nie powtarza się w kolumnie oznaczonej jako unikatowa. Za te zadania odpowiadają odpowiednio typ danych, ograniczenie CHECK, UNIQUE lub inne elementy definicji tabeli. Przy projektowaniu schematu trzeba też ustalić, czy wartość domyślna jest semantycznie bezpieczna. Wpisanie statusu „aktywny” może być błędne, jeśli nowy rekord powinien najpierw oczekiwać ręcznej weryfikacji.
Znaczenie domyślnego uzupełniania danych w aplikacji
Nieprawidłowo zaprojektowana wartość domyślna może powodować trudne do zauważenia błędy w programie. Aplikacja może poprawnie wykonać instrukcję INSERT, ale później odczytać rekord z wartością, której użytkownik wcale nie podał. Podczas diagnozy należy sprawdzić definicję tabeli, listę kolumn używaną przez zapytanie, typy danych oraz ewentualne wyzwalacze lub warstwę aplikacji, która dodatkowo modyfikuje rekord. Istotne jest także porównanie zachowania przy pominięciu kolumny, wpisaniu NULL i użyciu DEFAULT.
Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, w tym diagnostyką problemów z oprogramowaniem, które mogą objawiać się nieprawidłowym zapisem lub odczytem danych. W przypadku komputera używanego do pracy warto zabezpieczyć kopię plików konfiguracyjnych i, jeżeli jest to możliwe, przygotować przykład konkretnego rekordu oraz komunikat błędu. Ułatwia to rozdzielenie problemu z aplikacją od problemu z samą bazą danych i pozwala ocenić, czy przyczyną jest wartość domyślna, brak wymaganej kolumny, niezgodność typu danych czy inne ograniczenie tabeli.