用CHECK约束为SQL Server执行域完整性
日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]-
你可能认为简单的数据错误并不特别重要,但即使一个小错误也可能造成许多破坏。例如,一个邮政编码错误似乎不是太严重——直到一位新客户的订单无法到达。
或者想象一下,如果你的最优秀的销售员收到的佣金支票只有预期的一半,他所表现出的诧异程度。无疑,错误的数据可能造成严重的后果。
约束任何域,或栏可以接受的数据,开发者帮助保证应用程序保存了适当的数据。执行域完整性仅表示某一栏只接受应用程序的业务规则所规定的有效数据。
执行数据完整性的第一个步骤是设定栏的数据类型,但你的工作并不仅限于此。你还可以使用约束决定栏内所允许的实际值。约束指定义SQL Server如何执行数据完整性的规则。
你可能已经熟悉它们——你可以对一个栏应用PRIMARY KEY、NOT NULL、UNIQUE、FROEIGH KEY和CHECK这些约束。在本文中,我们将使用CHECK约束来执行业务规则,保护数据完整性。
应用一个简单的CHECK约束
定义一个栏的数据类型是执行域完整性的第一步。例如,一个数字栏不能接受alpha字符,一个比特栏只能接受0和1这两个值,等等。设定正确的数据类型可以发现一些数据输入错误,但一般来说,它无法执行给数据施加更多限制的业务规则。
CHECK约束在设定栏数据类型之上更进了一步。它们使用一个决定数据是否有效的布尔表达式限制一个栏可以接受的实际值。例如,你可以使用CHECK约束保证佣金比例总在5%到8%之间:
commission >= .05 AND commission <= .08
如果你输入0.06这个值,CHECK表达式将返回TRUE(真)并接受这个值。否则,表达式将返回FALSE(假)并拒绝0.01这个值。
用CHECK表达式求值时,出现NULL值的情况无法预料,且CHECK也不会明确拒绝NULL值。SQL Server具有足够的灵活性,允许在同一个栏中使用几个约束。(如果你试图建立一个与现有的约束或属性相冲突的约束,SQL Server将显示错误信息。)
为说明如何使用CHECK约束限制数据,我们建立一个限制输入仅为数字的约束,即使这个栏的数据类型为字符(文本)数据类型。这种情况在保存邮政编码时经常遇到。一个字符栏接受alpha字符,但邮政编码中只包含数字。使用Management Studio和SQL Server 2005 Express Edition,我手动建立一个只允许邮政编码栏接受五个数字的约束。我们在例子中使用的表包含两个nchar栏——ZIPCode和City栏。你可以使用任何SQL Server表,只要其中包含一个邮政编码栏即可。
按照我们的例子,运行下列语句建立表:
CREATE TABLE ZIPCodesZIPCodenchar(5), City nchar(30)
在Management Studio的Object Explorer中,打开上面的表。
右击Constraints(约束)并选择New Constraint(新约束)。
在CHECK Constraints对话框的Expression(表达式)框中输入以下约束表达式,如图A所示(仅显示一部分)。
ZIPCode like '[0-9] [0-9] [0-9] [0-9] [0-9]'
将约束命名为CK_ZIPCodes_ZIPCoce。
输入一段简短的说明,如“限定邮政编码为五位数字”。
点击Add(添加)然后Close(关闭)。
在Standard(标准)菜单上点击Save(保存)。
CHECK约束使用一个表达式决定用户输入是否有效
你可以避开手动过程,执行一个下列格式的SQL语句(只要表已经存在):
ALTER TABLE tablename ADD CONSTRAINT constraintname CHECK (expression) - [1] [2] 下一页
-
- 用CHECK约束为SQL Server执行域完整性 相关文章:
- ·用CHECK约束为SQL Server执行域完整性
- 用CHECK约束为SQL Server执行域完整性 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·SQL Server 练习题
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·查询及删除重复记录的方法大全
- ·SQL server 2005安装问题汇总
- ·MS SQL的一些经典常用操作语句汇总
- ·SQL语法大全
- ·掌握SQL Server数据库的实用技巧
- ·解决用sa登录sql 2005失败的问题
- ·SQL Server建立应用程序安全性和程序角色
- ·轻松掌握使用 SQL Server 浏览器
- ·SQL Server安全问题全攻略之口令
- ·SQL Server 2005 中的分区表和索引
- ·sql server2000导入mdf文件
- ·一个复合查询方法
- ·如何创建SQL Server 2000故障转移群集
- ·SQL Server 2000企业版安装教程(1)
- ·SQL Server 2005 Reporting Services 初次使用感受
- ·使用用于SQL Server的IIS虚拟目录管理实用工具
- ·SQL Server中函数的用法两种
- ·改进SQL Server数据库系统安全五步走
特别推荐
- ·结束SQL注入隐患3招
- ·掌握SQL Server数据库的实用技巧
- ·SQL的简单查询
- ·快速解决SQL Server“安全疑难”相关问题
- ·SQL Server 2005:你应知道的13件事
- ·实例解析:减少SQL日志大小的三个好方法
- ·使用SQL2000将现有代码作为Web服务提供
- ·sql server 2000数据库置疑的解决方法
- ·SQL Server安全问题全攻略之口令
- ·XP上不能安装MicrosoftSQLSERVER2000吗
- ·解析Microsoft Sql Server中的like语句
- ·推荐;适合SQL初学者学习的SQL FAQ集锦
- ·SQL Server 2005 中的分区表和索引
- ·查询及删除重复记录的方法大全
- ·详细介绍优化SQL Server 2000的设置
- ·关于SQL SERVER 日志满的处理方法
- ·使用SQL Server 2000索引视图提高性能
- ·SQL server 2005安装问题汇总
- ·解决用sa登录sql 2005失败的问题
- ·简单三步走堵死SQL Server注入漏洞
