sp_bindefault sp_bindefault - 北京怡康軟件科技有限公司 資源網 "/>
將默認值綁定到列或用戶定義的數據類型。
sp_bindefault [ @defname = ] 'default' ,
[ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
[@defname =] 'default'
由 CREATE DEFAULT 語句創(chuàng)建的默認名稱。default 的數據類型為 nvarchar(776),無默認值。
[@objname =] 'object_name'
要綁定默認值的表和列名稱或用戶定義的數據類型。object_name 的數據類型為 nvarchar(517),無默認值。如果 object_name 沒有采取 table.column 格式,則認為它屬于用戶定義數據類型。默認情況下,用戶定義數據類型的現有列繼承 default,除非默認值直接綁定到列中。默認值無法綁定到 timestamp 數據類型的列、帶 IDENTITY 屬性的列或者已經有 DEFAULT 約束的列。
說明 object_name 中可以含有 [ and ] 字符作為分隔標識符。有關更多信息,請參見分隔標識符。
[@futureonly =] 'futureonly_flag'
僅在將默認值綁定到用戶定義的數據類型時才使用。futureonly_flag 的數據類型為 varchar(15),默認值為 NULL。將此參數設置為 futureonly 時,它會防止現有的屬于此數據類型的列繼承新的默認值。當將默認值綁定到列時不會使用此參數。如果 futureonly_flag 為 NULL,那么新默認值將綁定到用戶定義數據類型的任一列,條件是此數據類型當前無默認值或者使用用戶定義數據類型的現有默認值。
0(成功)或 1(失敗)
可以使用 sp_bindefault 在不取消綁定現有默認值的情況下,將新默認值綁定到列(盡管最好使用 DEFAULT 約束)或者綁定到用戶定義的數據類型。原有默認值將被替代。不能將默認值綁定到 Microsoft® SQL Server™ 數據類型。如果默認值和要綁定的列不兼容,那么在試圖插入默認值時(不是在綁定時),SQL Server 將返回錯誤信息。
除非直接綁定了默認值或者將 futureonly_flag 指定為 futureonly,否則用戶定義數據類型的現有列將繼承新默認值。用戶定義數據類型的新列始終繼承默認值。
將默認值綁定到列時,相關信息將添加到 syscolumns 表中。將默認值綁定到用戶定義的數據類型時,相關信息將添加到 systypes 表中。
只有 sysadmin 固定服務器角色、db_owner 和 db_ddladmin 固定數據庫角色成員及表所有者才能執(zhí)行 sp_bindefault。
假定已經用 CREATE DEFAULT 語句在當前數據庫中定義了名為 today 的默認值,此示例將默認值綁定到 employees 表的 hire date 列。當將行添加到 employees 表而且沒有提供 hire date 列的數據時,列取得默認值 today 的值。
USE master
EXEC sp_bindefault 'today', 'employees.[hire date]'
假定存在命名為 def_ssn 的默認值和命名為 ssn 的用戶定義數據類型,此示例將默認值 def_ssn 綁定到用戶定義的數據類型 ssn 中。在創(chuàng)建表時,所有指派了用戶定義數據類型 ssn 的列都將繼承默認值。類型 ssn 的現有列也繼承默認值 def_ssn,除非為 futureonly_flag 值指定了 futureonly,或者在列上直接綁定了默認值。綁定到列的默認值始終優(yōu)先于綁定到數據類型的默認值。
USE master
EXEC sp_bindefault 'def_ssn', 'ssn'
此示例將默認值 def_ssn 綁定到用戶定義的數據類型 ssn。因為已指定 futureonly,所以不影響類型 ssn 的現有列。
USE master
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly'
此示例顯示了在 object_name 中分隔標識符的使用。
USE master相關文章
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.