Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dodaj kolumnę z wartością domyślną do istniejącej tabeli w SQL Server

Składnia:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Przykład:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Uwagi:

Opcjonalna nazwa ograniczenia:
Jeśli pominiesz CONSTRAINT D_SomeTable_SomeCol wtedy SQL Server automatycznie wygeneruje
    Domyślne ograniczenie o zabawnej nazwie, takiej jak:DF__SomeTa__SomeC__4FB7FEF6

Opcjonalne oświadczenie z wartościami:
WITH VALUES jest potrzebne tylko wtedy, gdy kolumna dopuszcza wartość Null
    i chcesz, aby wartość domyślna była używana dla istniejących rekordów.
Jeśli kolumna ma wartość NOT NULL , automatycznie użyje wartości domyślnej
    dla wszystkich istniejących rekordów, niezależnie od tego, czy określisz WITH VALUES czy nie.

Jak działają wstawki z ograniczeniem domyślnym:
Jeśli wstawisz rekord do SomeTable i nie Określ SomeCol , to będzie domyślnie 0 .
Jeśli wstawisz rekord i Określ SomeCol wartość jako NULL (a Twoja kolumna zezwala na wartości null),
    wtedy ograniczenie domyślne nie być używany i NULL zostanie wstawiona jako wartość.

Notatki zostały opracowane na podstawie wspaniałych opinii wszystkich przedstawionych poniżej.
Specjalne podziękowania dla:
    @Yatrix, @WalterStabosz, @YahooSerious i @StackMan za ich komentarze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wygeneruj losową wartość int od 3 do 6

  2. HAS_DBACCESS() – Dowiedz się, czy użytkownik może uzyskać dostęp do bazy danych w SQL Server

  3. SQL Server, Jak ustawić automatyczny przyrost po utworzeniu tabeli bez utraty danych?

  4. Standardowe ciągi formatu daty/godziny obsługiwane przez FORMAT() w SQL Server

  5. Typ danych VarBinary vs Image SQL Server do przechowywania danych binarnych?