Не добавляется колонка на SQL Server 2000

FireShock
Дата: 04.02.2009 10:12:17
На SQL Server 2005 следующий код отрабатывается нормально:

truncate table [dbo].[ptm2_TrainingSession_Quota]

    alter table [dbo].[ptm2_TrainingSession_Quota]
        add [applicant_id]
            int not null

А на SQL Server 2000 выдает ошибку:
ALTER TABLE only allows columns to be added that can contain nulls or have a DEFAULT definition specified. Column 'applicant_id' cannot be added to table 'ptm2_TrainingSession_Quota' because it does not allow nulls and does not specify a DEFAULT definition.

Почему и как избежать?
Glory
Дата: 04.02.2009 10:14:08
FireShock


Почему и как избежать?

Почему - написано в сообщении Column 'applicant_id' cannot be added to table 'ptm2_TrainingSession_Quota' because it does not allow nulls and does not specify a DEFAULT definition.

Как избежать - выполнить требования, описанные в сообщении
FireShock
Дата: 04.02.2009 10:15:24
Обязательно надо DEFAULT указывать?
Glory
Дата: 04.02.2009 10:18:29
FireShock
Обязательно надо DEFAULT указывать?

Сообщение разве недостаточно ясно об этом говорит ?
При наличии записей в таблице - обязательно. Иначе откуда сервер возмет для этих записей not null значения ?
pkarklin
Дата: 04.02.2009 10:18:30
FireShock
Обязательно надо DEFAULT указывать?


Если она обязательна NOT NULL, то да.
Supra93
Дата: 04.02.2009 10:18:44
FireShock
Обязательно надо DEFAULT указывать?


BOL-Alter Table

NULL | NOT NULL

Specifies whether the column can accept null values. Columns that do not allow null values can be added with ALTER TABLE only if they have a default specified. A new column added to a table must either allow null values, or the column must be specified with a default value.

If the new column allows null values and no default is specified, the new column contains a null value for each row in the table. If the new column allows null values and a default definition is added with the new column, the WITH VALUES option can be used to store the default value in the new column for each existing row in the table.

If the new column does not allow null values, a DEFAULT definition must be added with the new column, and the new column automatically loads with the default value in the new columns in each existing row.
FireShock
Дата: 04.02.2009 10:23:16
Glory
FireShock
Обязательно надо DEFAULT указывать?

Сообщение разве недостаточно ясно об этом говорит ?
При наличии записей в таблице - обязательно. Иначе откуда сервер возмет для этих записей not null значения ?


Таблица пуста - я указал и команду TRUNCATE TABLE.
FireShock
Дата: 04.02.2009 10:24:59
Supra93
FireShock
Обязательно надо DEFAULT указывать?


BOL-Alter Table

NULL | NOT NULL
... skip...


Это для версии 2000 BOL? На 2005, как я понял, необходимость указания default убрали.
FireShock
Дата: 04.02.2009 10:26:09
pkarklin
FireShock
Обязательно надо DEFAULT указывать?


Если она обязательна NOT NULL, то да.


В общем, понял, благодарю
Supra93
Дата: 04.02.2009 10:27:07
FireShock
Supra93
FireShock
Обязательно надо DEFAULT указывать?


BOL-Alter Table

NULL | NOT NULL
... skip...


Это для версии 2000 BOL?

Да, мы же про 2000 говорим?