Создание умолчания не может выполняться в одном пакете с другими командами Transact-SQL.
Умолчание может быть создано только в текущей базе данных. После того как умолчание создано, его можно связать со столбцом таблицы или пользовательским типом данных. Для связывания умолчания с объектом базы данных используется хранимая процедура sp_bindefault, имеющая следующий синтаксис:
sp_bindefault [@defname =] "default",
[(Pobjname =] "objectjiame"
[. [@future]only =] "futureonly_flag"]
Здесь используются следующие аргументы.
О "default" — имя умолчания. Это имя, указанное при создании умолчания в команде CREATE DEFAULT.
О "object_name" — имя объекта, к которому привязывается умолчание. Для связывания умолчания со столбцом таблицы имя объекта указывается в форме col umn. tab! e. Если же используется другая форма имени, то считается, что умолчание связывается с пользовательским типом данных. Умолчание не может быть связано со столбцом типа timestamp, столбцом с установленным ограничением целостности IDENTITY или со столбцом, связанным с другим умолчанием. В последнем случае необходимо отвязать от столбца старое умолчание, а уже затем привязывать новое. Если умолчание связывается со столбцом, имеющим пользовательский тип данных, и с этим типом данных связано другое умолчание, то умолчание, определенное для столбца, имеет приоритет над умолчанием, установленным для пользовательского типа данных. Если в имени объекта присутствуют недопустимые символы, то в аргументе ob ject_name необходимо использовать разделители [ и ] для указания имени объекта.
О "futureonly_flag" — этот аргумент требуется только при связывании умолчания с пользовательским типом данных и не нужен при связывании со столб-
цом таблицы. При указании этого аргумента в столбцы, имеющие пользовательский тип данных, с которым связывается умолчание, не будет внесено никаких изменений. Если же аргумент f utureonl у не указывается, то для всех столбцов пользовательского типа данных применяется значение по умолчанию, связанное с этим типом данных. Пример связывания умолчания со столбцом таблицы:
ЕХЕС sp_b1ndefault "default_one",
"[employes 013].[company name]"
Пример связывания умолчания с пользовательским типом данных:
ЕХЕС sp_bindefault "default_one".
"emp_data". "futureonly"
Если тип данных, определенный в умолчании, не соответствует типу данных, определенному для связанного столбца, то при попытке вставки строки в таблицу сервер выдаст сообщение об ошибке. При связывании умолчания со столбцом таблицы сообщение о несоответствии типов не выдается, и связывание проходит успешно.
Когда умолчание связывается со столбцом таблицы, информация о связывании сохраняется в системной таблице базы данных syscolumns. При связывании умолчания с пользовательским типом данных информация сохраняется в таблице systypes.
Если умолчание связывается со столбцом таблицы или пользовательским типом данных, для которых определено правило, то следует убедиться, что умолчание не конфликтует с правилом. В противном случае сервер будет выдавать сообщение об ошибке всякий раз при добавлении в таблицу новой строки без указания значения для столбца. При связывании правила и умолчания со столбцом сервер не отслеживает возможность подобных конфликтов, поэтому администратор должен сам позаботиться об их отсутствии.
При вставке новой строки без указания значений для столбцов этим столбцам присваивается либо значение по умолчанию (если таковое определено), либо значение NULL (если для столбца разрешено хранение значений NULL). Если для столбца не определено значение по умолчанию и запрещено хранение значений NULL, то при вставке пустой строки сервер выдаст сообщение об ошибке. Если для столбца разрешено хранение значений NULL и установлено значение по умолчанию, то при вставке пустой строки значение по умолчанию будет иметь приоритет над значением NULL.