zoukankan      html  css  js  c++  java
  • 将默认值绑定到列或绑定到别名数据类型

    sp_bindefault (Transact-SQL)

    将默认值绑定到列或绑定到别名数据类型。

    ms177503.note(zh-cn,SQL.90).gif重要提示:
    后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 建议改用 ALTER TABLECREATE TABLE 语句的 DEFAULT 关键字创建默认值定义。有关详细信息,请参阅创建和修改 DEFAULT 定义

    主题链接图标 Transact-SQL 语法约定

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

    [ @defname = ] 'default'

    由 CREATE DEFAULT 创建的默认值的名称。default 的数据类型为 nvarchar(776),没有默认值。

    [ @objname = ] 'object_name'

    表名和列名或者绑定默认值的别名数据类型。object_name 的数据类型为 nvarchar(776),,没有默认值。object_name 不能使用 varchar(max)nvarchar(max)varbinary(max)xml 或 CLR 用户定义类型进行定义。

    如果 object_name 是由单个部分组成的名称,则按别名数据类型进行解析。如果是由两部分或三部分组成的名称,则首先按表和列进行解析;如果解析失败,则按别名数据类型进行解析。默认情况下,除非默认值已经直接绑定到列,否则别名数据类型的现有列将继承 default。默认值不能绑定到 textntextimagevarchar(max)nvarchar(max)varbinary(max)xmltimestamp 或 CLR 用户定义类型列,也不能绑定到具有 IDENTITY 属性的列、计算列或已具有 DEFAULT 约束的列。

    ms177503.note(zh-cn,SQL.90).gif注意:
    object_name 可以包含方括号 [ ] 作为分隔标识符。有关详细信息,请参阅分隔标识符(数据库引擎)

    [ @futureonly = ] 'futureonly_flag'

    只有将默认值绑定到别名数据类型时才使用。futureonly_flag 的数据类型为 varchar(15),默认值为 NULL。当此参数设置为 futureonly 时,该数据类型的现有列无法继承新默认值。将默认值绑定到列时,从不使用此参数。如果 futureonly_flag 为 NULL,则新默认值将绑定到别名数据类型的所有列,这些列当前没有默认值或正在使用别名数据类型的现有默认值。

    0(成功)或 1(失败)

    在不取消绑定现有默认值的情况下,可以使用 sp_bindefault 将新默认值绑定到列(尽管最好使用 DEFAULT 约束)或者绑定到别名数据类型。原有默认值将被覆盖。不能将默认值绑定到 SQL Server 2005 系统数据类型或 CLR 用户定义类型。如果默认值和要绑定到的列不兼容,那么在试图插入默认值时(不是在绑定时),SQL Server 数据库引擎 将返回错误消息。

    除非直接将默认值绑定到别名数据库类型的现有列或者将 futureonly_flag 指定为 futureonly,否则别名数据类型的现有列将继承新默认值。别名数据类型的新列始终继承默认值。

    将默认值绑定到列时,相关信息将添加到 sys.columns 目录视图中。将默认值绑定到别名数据类型时,相关信息将添加到 sys.types 目录视图中。

    用户必须是表的所有者,或者是 sysadmin 固定服务器角色的成员,或 db_ownerdb_ddladmin 固定数据库角色的成员。

    A. 将默认值绑定到列

    已经使用 CREATE DEFAULT 在当前数据库中定义了名为 today 的默认值,以下示例将此默认值绑定到 Employee 表的 HireDate 列。每当将行添加到 Employee 表而且没有提供 HireDate 列的数据时,列都取得默认值 today 的值。

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

    B. 将默认值绑定到别名数据类型

    已经存在名为 def_ssn 的默认值和名为 ssn 的别名数据类型。以下示例将默认值 def_ssn 绑定到 ssn。创建表时,被赋予别名数据类型 ssn 的所有列都将继承此默认值。ssn 类型的现有列也继承默认值 def_ssn,除非为 futureonly_flag 值指定了 futureonly,或者在列上直接绑定了默认值。绑定到列的默认值始终优先于绑定到数据类型的默认值。

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

    C. 使用 futureonly_flag

    以下示例将默认值 def_ssn 绑定到别名数据类型 ssn。因为已指定 futureonly,所以不影响 ssn 类型的现有列。

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

    D. 使用分隔标识符

    以下示例显示了在 object_name 中使用分隔标识符 [t.1]

    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.
     
    http://technet.microsoft.com/zh-cn/library/ms177503(SQL.90).aspx
  • 相关阅读:
    C#正则表达式
    HDU 1009 FatMouse' Trade
    HDU 1022 Train Problem I
    HDU 3665 Seaside
    (转)qsort完整版用法
    HDU 1061 Rightmost Digit (矩阵快速幂)
    HDU 2817 A sequence of numbers
    HDU 1943 Ball bearings
    HDU 1058 Humble Numbers
    HDU 4278 Faulty Odometer
  • 原文地址:https://www.cnblogs.com/no7dw/p/1620757.html
Copyright © 2011-2022 走看看