W MySQL każdy typ kolumny ma "domyślne domyślne " wartość .
Jeśli kolumna NOT NULL jest dodana do tabeli i nie określono jawnego DEFAULT, niejawna wartość domyślna jest używana do wypełniania danych nowej kolumny. Podobne zasady obowiązują, gdy określona jest wartość DOMYŚLNA.
W związku z tym oryginalny DDL daje takie same wyniki jak:
-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT
Ustawienia trybu „ścisłego” wpływają na instrukcje DML polegające na wartościach domyślnych, ale nie wpływają na domyślne użycie domyślne po dodaniu kolumny.
Oto dowód na sqlfiddle ten tryb ścisły nie dotyczy instrukcji ALTER TABLE .. ADD.
To jest funkcja MySQL. Inne silniki, takie jak SQL Server, wymagają jawnego ograniczenia DEFAULT (lub kolumny NULL) dla takich zmian schematu.