DEFAULT
to wartość, która zostanie wstawiona w przypadku braku jawnej wartości w instrukcji wstawiania / aktualizowania. Załóżmy, że Twój DDL nie miał NOT NULL
ograniczenia:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault"
Wtedy mógłbyś wydać takie oświadczenia
INSERT INTO tbl (A, B) VALUES (NULL, NULL);
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, DEFAULT);
INSERT INTO tbl (A, B, col) DEFAULT VALUES;
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, NULL);
Alternatywnie możesz również użyć DEFAULT
w UPDATE
instrukcjach, zgodnie ze standardem SQL-1992 :
UPDATE tbl SET col = DEFAULT;
UPDATE tbl SET col = NULL;
Należy zauważyć, że nie wszystkie bazy danych obsługują wszystkie te standardowe składnie języka SQL. Dodanie NOT NULL
ograniczenia spowoduje błąd w instrukcjach 4, 6
, mimo że 1-3, 5
nadal są poprawnymi instrukcjami. A więc odpowiadając na twoje pytanie: nie, nie są one zbędne.
Nawet przy wartości domyślnej zawsze możesz zastąpić dane kolumny za pomocą
null
.NOT NULL
Ograniczenie nie pozwoli zaktualizować ten wiersz po to został stworzony znull
wartościąźródło
Mój nauczyciel języka SQL powiedział, że jeśli podasz zarówno
DEFAULT
wartość, jak iNOT NULL
lubNULL
,DEFAULT
zawsze należy je wyrazić przedNOT NULL
lubNULL
.Lubię to:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
źródło
Powiedziałbym, że nie.
Jeśli kolumna akceptuje wartości null, nic nie stoi na przeszkodzie, aby wstawić wartość null do pola. O ile mi wiadomo, wartość domyślna ma zastosowanie tylko przy tworzeniu nowego wiersza.
Jeśli nie ustawiono wartości null, nie można wstawić wartości null do pola, ponieważ spowoduje to zgłoszenie błędu.
Potraktuj to jako bezpieczny mechanizm zapobiegający zerom.
źródło