数据库 缺省值

  缺省值(Default)是往用户输入记录时没有指定具体数据的列中自动插入的数据。缺省值对象与ALTER TABLE 或CREATE TABLE 命令操作表时用DEFAULT 选项指定的缺省值功能相似,但缺省值对象可以用于多个列或用户自定义数据类型,它的管理与应用同规则有许多相似之处。表的一列或一个用户自定义数据类型也只能与一个缺省值相绑定。

9.3.1 创建缺省值
(1) 用CREATE DEFAULT 命令创建缺省值
CREATE DEFAULT 命令用于在当前数据库中创建缺省值对象,其语法如下:
CREATE DEFAULT default_name AS constant_expression
其中constant_expression 子句是缺省值的定义。constant_expression 子句可以是数学表达式或函数,也可以包含表的列名或其它数据库对象。
例9-11: 创建生日缺省值birthday_defa。
create default birthday_defa
as '1978-1-1'
例9-12: 创建姓名缺省值name_defa。
create default name_defa
as user

(2) 用Enterprise Manager 创建缺省值
在Enterprise Manager 中选择数据库对象“Defaults”, 单击右键,从快捷菜单中选择N“ew Default” 选项,即会弹出如图9-6 所示的创建缺省值属性对话框。输入缺省值名称和值表达式之后,单击“确定”按钮,即完成缺省值的创建。

9.3.2 查看缺省值
(1) 用Enterprise Manager 查看缺省值
在Enterprise Manager 中选择“Defaults”对象,即可从右边的任务板中看到缺省值的大部分信息。如图9-7 所示。也可以选择要查看的缺省值,单击右键,从快捷菜单中选择“Properties” 选项,即会出现如图9-8 所示的缺省值属性对话框,可以从中编辑缺省值的
值表达式。修改缺省值名称的方法与修改规则名称的方法相同,可以用Sp_rename 存储过程修改,也可以在企业管理器的任务板窗口中直接修改。

(2) 用存储过程Sp_helptext 查看缺省值
使用Sp_helptext 存储过程可以查看缺省值的细节。
例9-13: 查看缺省值today。
exec sp_helptext today

运行结果如下:
------------------------------------------------------------------
Text
------------------------------------------------------------------
create default [dp_date] as getdate()

9.3.3 缺省值的绑定与松绑
创建缺省值后,缺省值仅仅只是一个存在于数据库中的对象,并未发生作用。同规则一样,需要将缺省值与数据库表或用户自定义对象绑定。
(1) 用Enterprise Manager 管理缺省值的绑定
在Enterprise Manager 中,选择要进行绑定设置的缺省值,单击右键,从快捷菜单中选择“Properties” 选项,即会出现如图9-8 所示的缺省值属性对话框。

图9-8 中的“Bind UDTs…” 按钮用于绑定用户自定义数据类型,“Bind Columns…”按钮用于绑定表的列。在图9-8 中单击“Bind UDTs…” 按钮,则出现如图9-9 所示的绑定缺省值到用户自定义数据类型的对话框;单击“Bind Columns…” 按钮,则出现如图9-
10 所示的绑定缺省值到表的列的对话框。用它们来管理缺省值与表的列以及用户自定义数据类型之间的绑定非常方便。

(2) 用存储过程Sp_bindefault 绑定缺省值
存储过程Sp_bindefault 可以绑定一个缺省值到表的一个列或一个用户自定义数据类型上。其语法如下:
sp_bindefault [@defname =] 'default',
[@objname =] 'object_name'
[, 'futureonly']
其中'futureonly'选项仅在绑定缺省值到用户自定义数据类型上时才可以使用。当指定此选项时,仅以后使用此用户自定义数据类型的列会应用新缺省值,而当前已经使用此数据类型的列则不受影响。
例9-14 :绑定缺省值today 到用户自定义数据类型hire_date 上。
exec sp_bindefault today, hire_date
运行结果如下:
--------------------------- ------------------------------
Default bound to data type.
The new default has been bound to columns(s) of the specified user data type.

(3) 用存储过程Sp_unbindefault 解除缺省值的绑定
存储过程Sp_unbindefault 可以解除缺省值与表的列或用户自定义数据类型的绑定,其语法如下:
Sp_unbindefault [@objname =] 'object_name'
[,'futureonly']
其中'futureonly'选项同绑定时一样,仅用于用户自定义数据类型,它指定现有的用此用户自定义数据类型定义的列仍然保持与此缺省值的绑定。如果不指定此项,所有由此用户自定义数据类型定义的列也将随之解除与此缺省值的绑定。

例9-15: 解除缺省值num_default 与表products 的quantity 列的绑定。
exec sp_unbindefault ‘products.[quantity]’
运行结果如下:
--------------------------- ------------------------------
(1 row(s) affected)
Default unbound from table column.
注意:如果列同时绑定了一个规则和一个缺省值、那么缺省值应该符合规则的规定。
      不能绑定缺省值到一个用CREATE TABLE或ALTER TABLE命令创建或修改表时用DEFAULT选项指定了的缺省值的列上。

9.3.4 删除缺省值
可以在Enterprise Manager 中选择缺省值,单击右键,从快捷菜单中选择“Delete” 选项删除缺省值,也可以使用DROP DEFAULT 命令删除当前数据库中的一个或多个缺省
值。其语法如下:
DROP DEFAULT {default_name} [,...n]
注意:在删除一个缺省值前必须先将与其绑定的对象解除绑定。

例9-16: 删除生日缺省值birthday_defa。
drop default birthday_defa

本章小结
数据完整性工具的应用是SQL Server 的一大特点,它通过在数据库端使用特定的规定来管理流入与输出系统的信息,而不是由应用程序本身来控制信息的类型,这使得数据独立与应用程序成为开放的数据库系统。

时间: 2024-08-29 07:03:36

数据库 缺省值的相关文章

MS SQL基础教程:数据库缺省值

缺省值(Default)是往用户输入记录时没有指定具体数据的列中自动插入的数据.缺省值对象与ALTER TABLE 或CREATE TABLE 命令操作表时用DEFAULT 选项指定的缺省值功能相似,但缺省值对象可以用于多个列或用户自定义数据类型,它的管理与应用同规则有许多相似之处.表的一列或一个用户自定义数据类型也只能与一个缺省值相绑定. 9.3.1 创建缺省值 (1) 用CREATE DEFAULT 命令创建缺省值 CREATE DEFAULT 命令用于在当前数据库中创建缺省值对象,其语法如

如何获得当前数据库的SCN值

数据|数据库 如何获得当前数据库的SCN值 --SCN定义及获取方式 Last Updated: Thursday, 2004-12-02 15:04 Eygle         SCN(System Change Number) ,也就是通常我们所说的系统改变号,是数据库中非常重要的一个数据结构. 它定义数据库在某个确切时刻提交的版本.在事物提交时,它被赋予一个唯一的标示事物的 SCN . SCN 提供 Oracle 的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的 ( Oracl

JS中获取数据库中的值的方法

在项目中遇到一个问题,需要在JS中读取数据库中的值,然后再把值返回到页面中,解决方案如下:使用Ajax方法来实现,需要用到ajax.dll(一个ajax技术开发的帮助类库).   实施过程如下:     1.引用Ajax.dll     2.在App_Code写具体的方法,最好单独建立一个类文件,然后写具体方法.       复制代码 代码如下: public class AjaxMethod www.jb51.net {     public AjaxMethod()     {       

cript-VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊!

问题描述 VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊! VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊! 只返回某字段查找的某一个值,我试了好久就是不成功. 上网查的方法,不会用: setrs=connObj.execute(strSQLCode)ifnotrs.eofthenmsgboxrs(字段名)或用setrs=server.createobject(adodb.recordset)rs.openSQL,connObj,1,1ifnotrs.eofthenmsgbo

数据表-用ExpandableListView显示数据库的字段值

问题描述 用ExpandableListView显示数据库的字段值 问题是从数据表(person表)读取数据(personname),用ExpandableListView显示数据 这是最后的结果图 写了两个文件PersonActivity和ExpandableAdapter 这两张代码都是写在PersonActivity里面,错误在于这样直接setText就是不行,取不到值,但是之前从person表里面已经读取到了字段,我每一个和TextView和edittext都写了不同的名字,就是直接这样

php数据库中取值-php+mysql 数据库中取值

问题描述 php+mysql 数据库中取值 php+mysql 数据库中取值 表中字段是int类型,1代表供货商发货,2代表公司配货 .在页面上用一个下拉列表选择发货方式,如何把 供货商发货 公司配货 字样显示在下拉列表中 , 提交表单后可以更改配货方式,,, 后台逻辑该怎么写呢? 解决方案 http://yuncode.net/code/c_5267eac94c46717 解决方案二: http://www.jb51.net/article/60189.htm

用servlet打出数据库在jsp页面列表展示,但是jsp页面始终不出现数据库中的值

问题描述 用servlet打出数据库在jsp页面列表展示,但是jsp页面始终不出现数据库中的值 2C 这是servlet: public class OrderListServlet extends HttpServlet { public void doGet(HttpServletRequest request HttpServletResponse response) throws IOException ServletException{ List<Order> list = new

关于wcf 通过ef框架 访问数据库,得到值不能返回问题

问题描述 关于wcf 通过ef框架 访问数据库,得到值不能返回问题 我业务层通过调用wcf 服务, wcf访问数据库(ef 框架)后,得到数据,可是走到这一步 就卡住了,不能把数据返回业务层,请问这是那里问题 ? 解决方案 调试下,首先wcf服务返回了数据没有,其次,用抓包工具看下数据送到客户端调用者没有,最后看下客户端接收有没有问题

java jdbc连接mysql数据库插入null值问题

问题描述 java jdbc连接mysql数据库插入null值问题 ps.setFloat(8 device.getLatitude());如果device.getLatitude()返回的是null就报错,也就是说setFloat不能插入空值,而setString()方法就可以,不知道为什么请高手指点,谢谢!! 解决方案 PreparedStatement.java 的给方法签名是这样的public void setFloat(int parameterIndex float x) throw