sp_bindefault (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Привязывает значение по умолчанию к столбцу или псевдониму типа данных.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Рекомендуется создать определения по умолчанию с помощью ключевого слова DEFAULT инструкций ALTER TABLE или CREATE TABLE.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_bindefault
[ @defname = ] N'defname'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Аргументы
[ @defname = ] N'defname'
Имя созданного по умолчанию CREATE DEFAULT
. @defname является nvarchar(776), без значения по умолчанию.
[ @objname = ] N'objname'
Имя таблицы и столбца или типа данных псевдонима, к которому необходимо привязать значение по умолчанию. @objname — nvarchar(776) без значения по умолчанию. @objname нельзя определить с помощью varchar(max), nvarchar(max), varbinary(max), xml или clR определяемых пользователем типов.
Если @objname является именем одной части, он разрешается в качестве типа данных псевдонима. Если это двух- или трехкомпонентное имя, он сначала разрешается в виде таблицы и столбца; и если это разрешение завершается ошибкой, он разрешается как тип данных псевдонима. По умолчанию существующие столбцы типа данных псевдонима наследуют @defname, если значение по умолчанию не привязано непосредственно к столбцу. Значение по умолчанию нельзя привязать к тексту, ntext, image, varchar(max),nvarchar(max), varbinary(max), xml, timestamp или столбцу определяемого пользователем типа CLR, столбцу со IDENTITY
свойством, вычисляемым столбцом или столбцомDEFAULT
, который уже имеет ограничение.
@objname может содержать скобки ([
и]
) в виде идентификаторов с разделителями. Дополнительные сведения см. в разделе "Идентификаторы базы данных".
[ @futureonly = ] 'futureonly'
Используется только при привязке по умолчанию к типу данных псевдонима. @futureonly — varchar(15) с значением по умолчаниюNULL
. Если для этого параметра задано futureonly
значение, существующие столбцы этого типа данных не могут наследовать новое значение по умолчанию. Этот аргумент никогда не используется при привязке значения по умолчанию к столбцу. Если @futureonly , NULL
новое значение по умолчанию привязано к любым столбцам типа данных псевдонима, которые в настоящее время не имеют значения по умолчанию или используют существующий тип данных псевдонима.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
Можно использовать sp_bindefault
для привязки нового по умолчанию к столбцу, хотя DEFAULT
это ограничение предпочтительно или к типу данных псевдонима без привязки существующего по умолчанию. Старое значение по умолчанию переопределяется. Не удается привязать по умолчанию тип данных системы SQL Server или определяемый пользователем тип СРЕДЫ CLR. Если значение по умолчанию несовместимо с столбцом, к которому он привязан, sql Server ядро СУБД возвращает сообщение об ошибке при попытке вставить значение по умолчанию, а не при привязке.
Существующие столбцы типа данных псевдонима наследуют новое значение по умолчанию, если только значение по умолчанию не привязано непосредственно к ним или в будущем указано как futureonly
. Новые столбцы с псевдонимом типа данных всегда наследуют значение по умолчанию.
При привязке по умолчанию к столбцу связанные сведения добавляются в sys.columns
представление каталога. При привязке по умолчанию к типу данных псевдонима связанные сведения добавляются в sys.types
представление каталога.
Разрешения
Пользователь должен принадлежать таблице или быть членом предопределенных ролей сервера sysadmin или db_owner и db_ddladmin предопределенных ролей базы данных.
Примеры
А. Привязка столбца по умолчанию к столбцу
Имя today
по умолчанию определяется в текущей базе данных с помощью CREATE DEFAULT
. В следующем примере выполняется привязка по умолчанию к HireDate
столбцу Employee
таблицы. При добавлении строки в Employee
таблицу и данные для HireDate
столбца не предоставляются, столбец получает значение по умолчанию today
.
USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
B. Привязка по умолчанию к типу данных псевдонима
Значение по умолчанию с именем def_ssn
и псевдоним типа данных с именем ssn
уже существуют. В следующем примере значение по умолчанию def_ssn
привязывается к псевдониму ssn
. Когда создается таблица, значение по умолчанию наследуется всеми столбцами, которым присвоен псевдоним типа данных ssn
. Существующие столбцы типа ssn
также наследуют значение по умолчанию, если futureonly
только не указано для значения @futureonly, или столбец имеет привязку по умолчанию def_ssn
непосредственно к нему. Значения по умолчанию, привязанные к столбцам, всегда имеют приоритет над значениями по умолчанию, привязанными к типам данных.
USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';
C. Использование параметра futureonly
В следующем примере значение по умолчанию def_ssn
привязывается к псевдониму типа данных ssn
. Так как указан futureonly
, никакие существующие столбцы типа ssn
не затрагиваются.
USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';
D. Использование идентификаторов с разделителями
В следующем примере показано использование идентификаторов с разделителями в [t.1]
@objname.
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.