ошибка "недопустимо для создания ограничения по умолчанию" при попытке добавить ограничение в существующую таблицу
Я хочу добавить ограничение по умолчанию с помощью 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 ответов
насколько мне известно, есть два возможных обстоятельства, которые могут вызвать эту ошибку.
попытке добавить ограничение по умолчанию:
- вычисляемый столбец.
- столбец, который вообще не существует!
для определения таблицы
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 |
+------------------------------------+--------------+