SQL Server提供的默认值有助于处理用户不含全部表列的INSERT操作。默认值的使用方法与规则非常相似,它也可以通过和表列或者用户自定义数据类型进行绑定,对新增加的数据进行约束。在使用默认值时,首先需要在数据中创建一个默认值,然后将默认值与特定的表列绑定。
如果在插入行时没有指定列的值,则默认值指定列中所使用的值。默认值可以是任何取值为常量的对象。
在SQL Server中,有两种使用默认值的方法:
“ 在创建表时,指定默认值。如果使用企业管理器,则可以在设计表时指定默认值。如果使用T-SQL语言,则在CREATE TABLE语句中使用DEFAULT子句。这是首选的方法,也是定义默认值比较简洁的方法。
“ 使用CREATE DEFAULT语句创建默认对象,然后使用存储过程sp_bindefault将该默认对象绑定到列上。这是向前兼容的方法。
5.3.1 在创建表时指定默认值
![]() |
| 示意图 |
![]() |
| 示意图 |
![]() |
| 示意图 |
CREATE DEFAULT default_name /*默认值对象*/ |
其中主要参数说明如下:
“ default_name 为默认值对象的名称。
“ default_description 是任意数据类型的常量、内置函数或数学表达式。字符和日期常量用单引号(')引起来;货币、整数和浮点常量不需要使用引号。二进制数据必须以0x开头,货币数据必须以美元符号($)开头。默认值必须与列数据类型兼容。
下面是一个使用CREATE DEFAULT创建默认值对象的例子。例如,我们创建“库存量”默认对象,该默认值用来约束“库存表”中的“库存量”字段,在默认状态下,其值为0。
USE 经销商 |
上面的语句在“经销商”数据库中创建了一个“库存量”的默认值,在查询分析器中执行结果为“命令已成功完成。”信息。
用户可以打开【企业管理器】窗口,右击【库存表】表,选择【设计表】命令。在打开的【表设计器】对话框中,用户可以选择某行,单击【列】属性面板中的【默认值】列表选择默认对象,如图5-26所示。
另外,用户也可以在【表数据】对话框中,添加一条记录,当我们输入【库存数量】字段时,其值默认为0,如图5-27所示。
2.使用企业管理器创建默认对象
下面我们在“经销商”数据库中创建一个默认对象。
操作步骤
启动企业管理器,展开服务器组,并展开相应的服务器,以及“经销商”数据库。
在“经销商”数据库目录中,右击【默认值】项,选择【新建默认值】命令,如图5-28所示。
在弹出的【默认属性】对话框中,输入【名称】为“进货时间”,【值】为getdate( ),如图5-29所示。
![]() |
| 示意图 |
![]() |
| 示意图 |
![]() |
| 示意图 |
sp_bindefault [ @defname = ] 'default' , |
其中主要参数说明如下:
“ [@defname =] 'default' 由CREATE DEFAULT语句创建的默认名称。default的数据类型为 nvarchar(776),无默认值。
“ [@objname =] 'object_name' 要绑定默认值的表和列名称或用户定义的数据类型。object_name 的数据类型为nvarchar(517),无默认值。如果object_name没有采用table.column格式,则认为它属于用户定义数据类型。默认情况下,用户定义数据类型的现有列继承default,除非默认值直接绑定到列中。默认值无法绑定到timestamp数据类型的列、带IDENTITY属性的列或者已经有DEFAULT约束的列。
“ [@futureonly =] 'futureonly_flag' 仅在将默认值绑定到用户定义的数据类型时才使用。futureonly_flag的数据类型为 varchar(15),默认值为NULL。将此参数设置为 futureonly 时,它会防止现有的属于此数据类型的列继承新的默认值。当将默认值绑定到列时不会使用此参数。如果 futureonly_flag为NULL,那么新默认值将绑定到用户定义数据类型的任一列,条件是此数据类型当前无默认值或者使用用户定义数据类型的现有默认值。
下面首先创建一个“售出时间”默认对象,然后让其【值】等于getdate( )函数,然后将所创建的【售出时间】默认对象绑定到“销售表”中的【售出时间】字段。
USE 经销商 |
其执行查询结果为“已将默认值绑定到列”。
接下来,我们打开“销售表”的【表数据】对话框,在该对话框中添加一条记录【销售编号】为1057时,其【售出时间】字段将自动获取当前日期,如图5-34所示。
另外,用户也可以在【查询】窗口中,输入“EXEC sp_help售出时间”命令,来查看【售出时间】默认对象信息,如图5-35所示。
![]() |
| 示意图 |
sp_unbindefault [@objname=]'object_name' |
其中主要参数说明如下:
“ [@objname =] 'object_name' 要解除默认值绑定的表和列或者用户定义数据类型的名称。object_name的数据类型为nvarchar(776),无默认值。如果参数不是 table.column的形式,则假定object_name为用户定义数据类型。当为用户定义数据类型解除默认值绑定时,所有属于该数据类型并具有相同默认值的列也同时解除默认值绑定。对属于该数据类型的列,如果其默认值直接绑定到列上,则该列不受影响。
“ [@futureonly =] 'futureonly_flag' 仅用于解除用户定义数据类型默认值的绑定。futureonly_flag的数据类型为varchar(15),其默认值为NULL。当参数futureonly_flag为futureonly时,现有的属于该数据类型的列不会失去指定默认值。
下面我们通过使用sp_unbindefault语句来解除“销售表”中的【售出时间】字段所绑定的默认对象,其语句如下:
USE 经销商 |
执行查询结果为“已从表的列上解除了默认值的绑定。(所影响的行数为1行)”。
![]() |
| 示意图 |
DROP DEFAULT { default } [ ,...n ] |
![]() |
| 示意图 |
USE 经售商 |
| 回书目 上一节 下一节 |
|
· SQL Server入门到精通.. · 交换技术配置手册技术.. · 超级网管员——网络应.. · 网络服务器配置与应用.. · Linux集群技术自测试题.. · JavaSript核心技术自测.. |
· ARP攻击与防范技术自测.. · 国庆挑战自己参加自测 .. · 《网管员必读—网络应.. · 历次技术自测 获奖网友.. · 51CTO国庆七天技术自测.. · 9.2.2 无线AP |
|
|||
| · 网管系统介绍 · 网络管理系统如何支撑I.. · CISSP认证成长之路 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. |
· 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·体验Windows Server 2008.. ·将超星图书转成PDF文档 |
·使用 Office Communicati.. ·VMware Workstation 6.01.. |
| ·强烈质疑“步行1公里就能.. ·国庆期间新闻回顾:微软.. |
·9月第3周回顾:微软和英.. ·9月第2周回顾:四核之战.. |
| · 华为、贝恩资本22亿美元.. · NGN:下一代网络 · 网络访问中断大排查 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· Google推出唯一硬件——.. · 硬盘之父获得诺贝尔物理.. · 理性面对四核服务器选购 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 硬盘之父获得诺贝尔物理.. · 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. |