sql >> Database >  >> RDS >> Mysql

MySQL voegt een NOT NULL-kolom toe

In MySQL heeft elk kolomtype een "impliciete standaard " waarde .

Als een NOT NULL-kolom aan een tabel wordt toegevoegd , en er is geen expliciete DEFAULT opgegeven, wordt de impliciete standaardwaarde gebruikt om de nieuwe kolomgegevens te vullen. Soortgelijke regels zijn van toepassing wanneer de DEFAULT-waarde is opgegeven.

Als zodanig produceert de originele DDL dezelfde resultaten als:

-- 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

De instellingen voor de "strikte" modus zijn van invloed op DML-instructies die gebaseerd zijn op standaardwaarden, maar hebben geen invloed op het impliciete standaardgebruik wanneer de kolom wordt toegevoegd.

Hier is een sqlfiddle "proof" die strikte modus is niet van toepassing op de instructie ALTER TABLE .. ADD.

Dit is een MySQL-functie. Andere engines, zoals SQL Server, vereisen een expliciete DEFAULT- (of NULL-kolom) beperking voor dergelijke schemawijzigingen.




  1. Postgres dynamische queryfunctie

  2. Hoeveel rijen in een database zijn TE VEEL?

  3. Rijen overslaan die beperkingen schenden bij het invoegen van gegevens in SQLite

  4. Vervolgkeuzelijst invullen - PHP Ajax MySQL