SQL Server 2000
Страница 62

Создание умолчания не может выполняться в одном пакете с другими командами 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.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63