sp_bindefault (Transact-SQL)

Применимо к:База данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

Привязывает значение по умолчанию к столбцу или псевдониму типа данных.

Важно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Рекомендуется создавать определения по умолчанию с помощью ключевого слова DEFAULT инструкций ALTER TABLE или CREATE TABLE .

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
sp_bindefault [ @defname = ] 'default' ,   
    [ @objname = ] 'object_name'   
    [ , [ @futureonly = ] 'futureonly_flag' ]   

Аргументы

[ @defname = ] 'default' Имя объекта по умолчанию, созданного с помощью инструкции CREATE DEFAULT. Значение по умолчаниюnvarchar(776) без значения по умолчанию.

[ @objname = ] 'object_name' Имя таблицы и столбца или псевдоним типа данных, к которому необходимо привязать значение по умолчанию. object_name имеет значение nvarchar(776) без значения по умолчанию. object_name нельзя определить с помощью определяемых пользователем типов varchar(max), nvarchar(max), varbinary(max), xml или CLR.

Если object_name является однокомпонентным именем, он разрешается как псевдоним типа данных. Если оно двух- или трехкомпонентное, предпринимается попытка рассмотреть его как таблицу и столбец; в случае неудачи имя рассматривается как псевдоним типа данных. По умолчанию существующие столбцы псевдонима типа данных наследуют значение по умолчанию, если только значение по умолчанию не привязано непосредственно к столбцу. Значение по умолчанию не может быть привязано к столбцу типа text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp или CLR определяемого пользователем типа, столбцу со свойством IDENTITY, вычисляемом столбцу или столбцу, который уже имеет ограничение DEFAULT.

Примечание

object_name может содержать квадратные скобки [] в качестве идентификаторов с разделителями. Дополнительные сведения см. в разделе Идентификаторы баз данных.

[ @futureonly = ] 'futureonly_flag' Используется только при привязке по умолчанию к псевдониму типа данных. futureonly_flagvarchar(15) со значением по умолчанию NULL. Если для этого параметра задано значение futureonly, существующие столбцы этого типа данных не могут наследовать новое значение по умолчанию. Этот аргумент никогда не используется при привязке значения по умолчанию к столбцу. Если futureonly_flag имеет значение NULL, новое значение по умолчанию привязывается ко всем столбцам псевдонима типа данных, которые в настоящее время не имеют значения по умолчанию или используют существующий тип данных псевдонима по умолчанию.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Remarks

Вы можете использовать sp_bindefault для привязки нового значения по умолчанию к столбцу, хотя предпочтительнее использовать ограничение DEFAULT или псевдоним типа данных без отмены привязки к существующему значению по умолчанию. Старое значение по умолчанию переопределяется. Нельзя привязать по умолчанию к системным типам данных SQL Server или определяемого пользователем типа CLR. Если значение по умолчанию несовместимо со столбцом, к которому вы его привязали, SQL Server компонент Компонент Database Engine возвращает сообщение об ошибке при попытке вставить значение по умолчанию, а не при привязке.

Существующие столбцы типа данных псевдонима наследуют новое значение по умолчанию, если только к ним не привязано значение по умолчанию или futureonly_flag не указан как futureonly. Новые столбцы с псевдонимом типа данных всегда наследуют значение по умолчанию.

При привязке по умолчанию к столбцу связанные сведения добавляются в представление каталога sys.columns . При привязке по умолчанию к псевдониму типа данных связанные сведения добавляются в представление каталога sys.types .

Разрешения

Пользователь должен быть владельцем таблицы, членом предопределенной роли сервера sysadmin или db_owner и db_ddladmin предопределенных ролей базы данных.

Примеры

A. Привязка значения по умолчанию к столбцу

Значение по умолчанию с именем today было определено в текущей базе данных с помощью инструкции CREATE DEFAULT. В следующем примере это значение по умолчанию привязывается к столбцу HireDate в таблице Employee. Каждый раз, когда в таблицу Employee добавляется строка, а данные для столбца HireDate не заданы, этот столбец получает значение по умолчанию today.

USE master;  
GO  
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';  

Б. Привязка значения по умолчанию к псевдониму типа данных

Значение по умолчанию с именем def_ssn и псевдоним типа данных с именем ssn уже существуют. В следующем примере значение по умолчанию def_ssn привязывается к псевдониму ssn. Когда создается таблица, значение по умолчанию наследуется всеми столбцами, которым присвоен псевдоним типа данных ssn. Существующие столбцы типа ssn также наследуют def_ssn по умолчанию, если значение futureonly не указано для futureonly_flag значения или если столбец не привязан непосредственно к нему. Значения по умолчанию, которые привязаны к столбцам, всегда имеют приоритет над значениями по умолчанию, привязанными к псевдониму типа данных.

USE master;  
GO  
EXEC sp_bindefault 'def_ssn', 'ssn';  

В. Использование аргумента futureonly_flag

В следующем примере значение по умолчанию def_ssn привязывается к псевдониму типа данных ssn. Так как параметр futureonly указан, существующие столбцы типа ssn не затрагиваются.

USE master;  
GO  
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';  

Г. Использование идентификаторов с разделителями

В следующем примере показано использование идентификаторов с разделителями [t.1]в object_name.

USE master;  
GO  
CREATE TABLE [t.1] (c1 int);   
-- Notice the period as part of the table name.  
EXEC sp_bindefault 'default1', '[t.1].c1' ;  
-- The object contains two periods;   
-- the first is part of the table name,   
-- and the second distinguishes the table name from the column name.  

См. также:

Хранимые процедуры ядра СУБД (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
DROP DEFAULT (Transact-SQL)
Хранимая процедура sp_unbindefault (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)