Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Оператор create table с атрибутом default

Создание умолчания для колонки с помощью оператора CREATE TABLE является предпочтительным, стандартным методом. Следующий оператор создает в базе данных MyDB таблицу, содержащую умолчания для обеих колонок, – columnA (типа char) и columnB (типа int):

USE MyDB

CREATE TABLE MyTable

(

columnA char(15) NULL DEFAULT 'n/a',

columnB int NULL DEFAULT 0

)

GO

Значение по умолчанию n/a (сокращение от not applicable – неприменимо) для колонки columnA совместимо с типом данных char этой колонки, и значение по умолчанию 0 для колонки columnB совместимо с типом данных int . Если при вставке новой строки в таблицу не указывается конкретное значение для одной или обеих колонок, то используется соответствующее значение по умолчанию. Поэтому единственным способом присваивания этим колонкам значения NULL является явная вставка NULL. Null-значения допустимы, поскольку для обеих колонок указан атрибут NULL.

Оператор alter table с атрибутом default

Чтобы изменить определение DEFAULT для колонки или добавить это определение к колонке в уже существующей таблице, следует использовать оператор ALTER TABLE. Если значение по умолчанию уже определено и нужно изменить его с помощью этой команды, то сначала следует удалить существующее умолчание, указав его имя, и затем добавить новое умолчание.

Предположим, нет нужды изменять существующее умолчание. Если оно создано с помощью оператора CREATE TABLE или с помощью Management Studio, без явного указания имени самого умолчания, то SQL Server присвоит имя автоматически. Чтобы выяснить, какое имя было присвоено умолчанию (имя используется для удаления умолчания с помощью T-SQL), необходимо запустить хранимую процедуру sp_help, указав имя таблицы, для которой задано это умолчание, как в следующем примере:

USE MyDB

GO

sp_help MyTable

GO

Имена всех ограничений default по таблице MyTable появятся в конце выводимых результатов в столбце под заголовком constraint_name (рис. 5.1).

рис. 5.1. Результаты работы хранимой процедуры sp_help

Предположим, что необходимо изменить для колонки columnA значение по умолчанию n/a на значение not applicable. Напомним, сначала надо удалить существующее умолчание и затем добавить новое. Для удаления умолчания, используется следующий оператор:

ALTER TABLE MyTable

DROP CONSTRAINT DF_MyTable_columnA

С помощью следующего оператора можно теперь добавить новое умолчание, присвоив ему на этот раз имя:

ALTER TABLE MyTable

ADD CONSTRAINT DF_MyTable_columnA

DEFAULT 'not applicable' FOR columnA

GO

Изменяя существующее умолчание по какой-либо колонке, для всех существующих строк в этой колонке остаются прежние значения, даже если это значение NULL. Новое значение по умолчанию будет использоваться только для новых строк.

ALTER TABLE MyTable

ADD columnC tinyint NOT NULL DEFAULT 13

GO

Теперь таблица MyTable содержит еще одну колонку, columnC, которая имеет значение по умолчанию 13. Поскольку columnC – новая колонка, определенная с атрибутом NOT NULL, этой колонке в уже существующих строках таблицы будет присвоено значение по умолчанию 13.

Если бы в новой колонке было разрешено использование значений NULL, то все существующие строки получили бы в новой колонке значение NULL. Если нужно, чтобы этой колонке было присвоено значение по умолчанию (вместо NULL), то в предложении DEFAULT нужно использовать параметр WITH VALUES, как это показано ниже:

ALTER TABLE MyTable

ADD columnC tinyint NULL DEFAULT 13 WITH VALUES

GO

При использовании WITH VALUES новой колонке во всех существующих строках таблицы MyTable будет присвоено значение 13 (вместо значения NULL).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]