ошибка "недопустимо для создания ограничения по умолчанию" при попытке добавить ограничение в существующую таблицу

Я хочу добавить ограничение по умолчанию с помощью ALTER TABLE в SQL Server, но вместо этого я получил сообщение об ошибке ниже.

столбец "StartDate" в таблице "Register" недопустим для создания ограничение default.

Я знаю, что могу объявить ограничение при создании таблицы, но это не та ситуация, в которой я нахожусь. Надеюсь, кто-то может мне помочь ;)

вот мой alter о себе:

ALTER TABLE [dbo].[Register]
  ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

и это мое создание сценарий таблицы:

CREATE TABLE [dbo].[Register]
  (
     [ID]        [INT] IDENTITY(1, 1) NOT NULL,
     /* ....*/
     [StartDate] [DATETIME] NULL
  ) 

Edited: исправлено: я забыл, что поле [StartDate] даже не существует в таблице. Моя вина!

1 ответов


насколько мне известно, есть два возможных обстоятельства, которые могут вызвать эту ошибку.

попытке добавить ограничение по умолчанию:

  1. вычисляемый столбец.
  2. столбец, который вообще не существует!

для определения таблицы

CREATE TABLE dbo.Register
  (
     ID INT IDENTITY(1, 1) NOT NULL,
     Computed AS 'Foo'
  ) 

оба следующих оператора завершаются ошибкой 1752.

ALTER TABLE dbo.Register
  ADD CONSTRAINT C1 DEFAULT 'X' FOR Computed

ALTER TABLE [dbo].[Register]
  ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

здесь различные другие условия на котором не допускается чтобы добавить ограничение по умолчанию в столбец, но все они имеют свои уникальные номера ошибок и сообщения.

+------------------------------------+--------------+
|               Reason               | Error number |
+------------------------------------+--------------+
| Column is IDENTITY                 |         1754 |
| Column is timestamp/rowversion     |         1755 |
| Sparse Column                      |         1791 |
| Default constraint already present |         1781 |
+------------------------------------+--------------+