Chinaunix首页 | 论坛 | 博客
  • 博客访问: 633080
  • 博文数量: 825
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 14:19
文章分类

全部博文(825)

文章存档

2011年(1)

2008年(824)

我的朋友

分类:

2008-10-27 14:24:34


  创建称为默认值的对象。当绑定到列或用户定义数据类型时,如果插入时没有明确提供值,默认值便指定一个值,并将其插入到对象所绑定的列中(或者,在用户定义数据类型的情况下,插入到所有列中)。默认值是一个向后兼容的功能,它执行一些与使用 ALTER 或 CREATE TABLE 语句的 DEFAULT 关键字创建的默认值定义相同的功能。默认值定义是限制列数据的首选并且标准的方法,因为定义和表在一起,当除去表时,将自动除去默认值定义。然而,当在多个列中多次使用默认值时,默认值也有其优点。
  
  语法
  CREATE DEFAULT default
  AS constant_expression
  
  参数
  default
  
  默认值的名称。默认值名称必须符合标识符的规则。可以选择是否指定默认值所有者名称。
  
  constant_expression
  
  只包含常量值的表达式(不能包含任何列或其它数据库对象的名称)。可以使用任何常量、内置函数或数学表达式。字符和日期常量用单引号 (') 引起来;货币、整数和浮点常量不需要使用引号。二进制数据必须以 0x 开头,货币数据必须以美元符号 ($) 开头。默认值必须与列数据类型兼容。
  
  注释
  只能在当前数据库中创建默认值的名称。在数据库中,每个所有者的各默认值名称必须是唯一的。创建默认值后,使用 sp_bindefault 将其绑定到列或用户定义数据类型。
  
  如果默认值和其绑定到的列不兼容,则在尝试插入默认值时,Microsoft® SQL Server™ 会生成错误信息。例如,N/A 不能用作 numeric 列的默认值。
  
  如果默认值对于它所绑定的列而言太长,该值就会被截断。
  
  在单个批处理中,CREATE DEFAULT 语句不能与其它 Transact-SQL 语句组合使用。
  
  在以相同的名称创建新的默认值之前,必须除去原有的默认值,在除去前,必须通过执行 sp_unbindefault 来取消对该默认值的绑定。
  
  如果列同时有默认值和规则与之关联,则默认值不能违反规则。与规则冲突的默认值将永远不能插入列,每次试图插入这样的默认值时,SQL Server 都会生成错误信息。
  
  当绑定到列以后,在以下情况下将插入默认值:
  
  非显式地插入值。
  
  
  在 INSERT 中使用 DEFAULT VALUES 或 DEFAULT 关键字来插入默认值。
  如果在创建列时指定 NOT NULL 并且没有为其创建默认值,则当用户未能为该列输入项时,就会生成错误信息。下表说明默认值的存在性与将列定义为 NULL 或 NOT NULL 之间的关系。表中的条目显示了结果。
  
  
  说明 SQL Server 是将空字符串解释为单个空格还是解释为真正的空字符串,由 sp_dbcmptlevel 的设置控制。如果兼容级别小于或等于 65,SQL Server 就将空字符串解释为单个空格。如果兼容级别等于 70,则 SQL Server 将空字符串解释为空字符串。
  若要重命名默认值,请使用 sp_rename。若要获得默认值的报表,请使用 sp_help。
  
  权限
  CREATE DEFAULT 的权限默认授予 sysadmin 固定角色成员和 db_owner 和 db_ddladmin 固定数据库角色成员。sysadmin、db_owner 和 db_securityadmin 角色的成员可以将权限转让给其他用户。
  
  示例
  A.创建简单的字符默认值
  下面的示例创建字符默认值 unknown。
  
  USE pubs
  GO
  CREATE DEFAULT phonedflt AS 'unknown'
  
  B.绑定默认值
  下面的示例绑定示例 A 中创建的默认值。只有当 authors 表的 phone 列没有输入项时,该默认值才起作用。请注意,没有输入项和显式指定空值不同。
  
  因为名为 phonedflt 的默认值不存在,所以下列 Transact-SQL 语句将失败。本例只用于演示。
  
  USE pubs
  GO
  sp_bindefault phonedflt, 'authors.phone'
  
【责编:admin】

--------------------next---------------------

阅读(252) | 评论(0) | 转发(0) |
0

上一篇:CREATE PROCEDURE

下一篇:CREATE TABLE

给主人留下些什么吧!~~