sql >> Databáze >  >> RDS >> Mysql

MySQL přidat sloupec NOT NULL

V MySQL má každý typ sloupce "implicitní výchozí " hodnota .

Pokud je sloupec NOT NULL přidán do tabulky a není zadáno žádné explicitní DEFAULT, k naplnění dat nového sloupce se použije implicitní výchozí hodnota. Podobná pravidla platí, když je zadána hodnota DEFAULT.

Původní DDL jako takový poskytuje stejné výsledky jako:

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

Nastavení "přísného" režimu ovlivní příkazy DML, které se spoléhají na výchozí hodnoty, ale neovlivní implicitní výchozí použití při přidání sloupce.

Zde je důkaz sqlfiddle tento přísný režim se nevztahuje na příkaz ALTER TABLE .. ADD.

Toto je funkce MySQL. Jiné motory, jako je SQL Server, vyžadují explicitní omezení DEFAULT (nebo sloupec NULL) pro takové změny schématu.




  1. Jak mohu obnovit/znovu otevřít databázi SQLite po jejím obnovení, když používám singleton jako pomocníka databáze

  2. Co znamená SELECT ... FOR XML PATH(' '),1,1)?

  3. Co znamená ON [PRIMARY]?

  4. Jak se připojit k SQL Serveru s ověřováním Windows z Node.JS pomocí modulu mssql