- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用检查约束验证SQLServer中的数据.doc
使用检查约束验证SQL Server中的数据教育资源库
有许多校验数据和业务规则是否匹配的方法,在应用程序代码中可以强制实施数据校验,也可以由数据库引擎执行数据校验。根据校验的方法不同,规则需求将确定你的应用程序该如何正确地以及该在哪里校验数据,本文将向你介绍如何使用数据库检查约束校验SQLServer中的数据。
什么是检查约束?
检查约束是一个识别SQLServer表中每行可接受的列值的规则,检查约束帮助实施域的完整性,域完整性定义了数据库表中列的有效值,检查
约束可以验证单列的域完整性,也可以验证多列的域完整性,在单个列上可以有多个检查约束,如果插入或更新的数据违反了检查约束,数据
库引擎将暂时停止INSERT和UPDATE操作。
检查约束由逻辑表达式构成,逻辑表达式可能是单个表达式,如Salarylt;200000.00,也可能是多个表达式,如RentalDategt;GETDATE
()andRentalDate
中的数据,检查约束是基于列的,因此,即便表中某列的检查约束没有通过,也不会影响到表中其它列的INSERT和UPDATE操作,检查约束可以在列级创建,也可以在表级创建。
在CREATETABLE语句中创建检查约束
创建检查约束的一个方法就是在创建表的时候创建,下面是一个简单的CREATETABLE脚本,它包含了创建一个检查约束的代码:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
SalaryTypenvarchar(10),
Salarydecimal(9,2)
CHECK(Salarylt;150000.00)
);
这里的CHECK子句关联了Salary列,这是一个列级的约束,如果你创建了一个列级约束,你只能在检查约束的逻辑表达式中使用列名,这里的检查约束列就只允许Salary列的值小于150000。创建这个表时也会创建CHECK约束,约束名由系统自动生成,如果你想在CREATETABLE操作时命名你的检查约束,代码就可以变成下面这样:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
SalaryTypenvarchar(10),
Salarydecimal(9,2)
CONSTRAINTCK_Payroll_SalaryCHECK(Salarylt;150000.00)
);
这里我将检查约束命名为CK_Payroll_Salary了。
上面的例子都仅在单个列上创建了检查约束,而且也只有一个条件,其实检查约束表达式可以包括多个条件,下面就是一个包含多个条件的检查约束:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
SalaryTypenvarchar(10),
Salarydecimal(9,2)
CONSTRAINTCK_Payroll_Salary
CHECK(Salarygt;10.00andSalarylt;150000.00)
);
如果要让SQLServer拒绝一条记录,那在检查约束逻辑表达式的最终输出中需要计算为FALSE,因此,在这个例子中,检查约束会验证Salary大于10且小于150000,这两个条件中任意一个检查结果返回FLASE,都会直接拒绝Payroll表中对行的INSERT或UPDATE请求,提示也会显示一条错误消息。
如果你想创建一个表级检查约束,你可以使用下面的代码:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
Salarydecimal(9,2),
SalaryTypenvarchar(10),
CHECK(Salarygt;10.00andSalarylt;150000.00)
);
在这里我创建了单个表级约束,检查Salary列,但可以使用表中的任意列,因为这是一个表级检查,注意CHECK子句将会引起SQLServer生成一个检查约束名,因为我没有手动为其命名。
在现有表上创建检查约束
有时,在你设计和创建好表后,你可能想要在表上放一个检查约束,你可以使用ALTERTABLE语句来实现,下面是一个例子:
ALTERTABLEdbo.Payroll
onthly#39;,#39;Annual#39;));
我在这里的创建检查约束将会检查Payroll表中SalaryType列的值为Hourly,Monthly或Annual的所有记录,我还给这个检
您可能关注的文档
- 乙型肝炎病毒X基因对肝癌细胞Bel7404细胞周期的影响.doc
- 乙酰胺对念珠藻No.stoc106生长周期的影响.doc
- 乙醇对糖尿病易感患者血清肿瘤坏死因子α、白介素1、白介素6、谷氨酸脱羧酶抗体水平的影响.doc
- 九年级毕业典礼讲话:怀揣梦想,扬帆起航,勇敢前行.doc
- 九年级迎中考体育训练活动方案.doc
- 乡土材料在农村幼儿园区域活动中的应用研究.doc
- 乡村医生技能竞赛抢答题(1.doc
- 乡村医生竞赛必答题1卷.doc
- 乡村旅游产业的价值体系及其对产业升级的影响.doc
- 乡镇创先争优知识竞赛主持词.doc
- 2025年中国锻铁围栏市场调查研究报告.docx
- 2025年中国椭圆型市场调查研究报告.docx
- 2025年中国无蔗糖原味豆浆市场调查研究报告.docx
- 2025-2031年中国泛在电力物联网行业发展运行现状及投资潜力预测报告.docx
- 2025年中国制袋机零件市场调查研究报告.docx
- 2025年中国智能除垢型电子水处理仪市场调查研究报告.docx
- 2025-2031年中国甘肃省乡村旅游行业市场深度研究及投资策略研究报告.docx
- 2025-2031年中国干海产品行业市场发展监测及投资战略规划报告.docx
- 2025年中国全铝图解易拉盖市场调查研究报告.docx
- 2025年中国人造毛皮服装市场调查研究报告.docx
文档评论(0)