W SQL Server mam nową kolumnę w tabeli:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Nie udaje się to, ponieważ określam NIE NULL bez określenia domyślnego ograniczenia. Tabela nie powinna mieć domyślnego ograniczenia.
Aby obejść ten problem, mógłbym utworzyć tabelę z domyślnym ograniczeniem, a następnie ją usunąć.
Jednak wydaje się, że nie ma sposobu, aby określić, że domyślne ograniczenie powinno być nazwane jako część tej instrukcji, więc moim jedynym sposobem na pozbycie się go jest posiadanie procedury składowanej, która wyszukuje ją w sys.default_constraints stół.
Jest to trochę niechlujne / rozwlekłe w przypadku operacji, która może się często zdarzać. Czy ktoś ma na to lepsze rozwiązania?
NOT NULL
obok typu danych? Umieszczenie go po ograniczeniu może być poprawne pod względem składniowym, ale umieszczenie go w tym miejscu wydaje się być mylące.źródło
Chciałbym dodać kilka szczegółów, ponieważ istniejące odpowiedzi są raczej cienkie :
Najważniejsza wskazówka to: Nigdy, przenigdy nie powinieneś tworzyć ograniczenia bez wyraźnej nazwy!
Największy problem z nienazwanymi ograniczeniami : kiedy wykonujesz to na różnych komputerach klientów, otrzymasz różne / losowe nazwy na każdym z nich.
Każdy przyszły skrypt aktualizacji będzie prawdziwym bólem głowy ...
Ogólna rada to:
DF_TableName_ColumnName
dla domyślnego ograniczeniaCK_TableName_ColumnName
dla ograniczenia sprawdzającegoUQ_TableName_ColumnName
dla unikalnego ograniczeniaPK_TableName
dla ograniczenia klucza podstawowegoOgólna składnia to
Spróbuj tego tutaj
Możesz dodać więcej ograniczeń do każdej kolumny i możesz dodać dodatkowe ograniczenia, tak jak dodajesz kolumny po przecinku:
- wstaw jakieś dane
źródło
Spróbuj jak poniżej skrypt-
źródło