科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用CHECK为SQL Server执行域完整性(2)

用CHECK为SQL Server执行域完整性(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

你可能认为简单的数据错误并不特别重要,但即使一个小错误也可能造成许多破坏。例如,一个邮政编码错误似乎不是太严重——直到一位新客户的订单无法到达。 SW.ofZT

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年8月29日

关键字: SQL Server SQL Server 各版本 CHECK 数据库

  • 评论
  • 分享微博
  • 分享邮件
我们在例子中使用的表包含两个nchar栏——ZIPCode和City栏。你可以使用任何SQL Server表,只要其中包含一个邮政编码栏即可。 3a<0  
]G$p>5 "  
按照我们的例子,运行下列语句建立表: "q,saH\&  
CREATE TABLE ZIPCodesZIPCodenchar(5), City nchar(30) ^nV[,bKT  
在Management Studio的Object Explorer中,打开上面的表。 Mq`.{.Qe  
右击Constraints(约束)并选择New Constraint(新约束)。 vk`x]  
在CHECK Constraints对话框的Expression(表达式)框中输入以下约束表达式,如图A所示(仅显示一部分)。 Bq! 3{T  
ZIPCode like '[0-9] [0-9] [0-9] [0-9] [0-9]' ,1-7q|9  
将约束命名为CK_ZIPCodes_ZIPCoce。 .8)oht  
输入一段简短的说明,如“限定邮政编码为五位数字”。 ]BUqh|mB]  
点击Add(添加)然后Close(关闭)。 H%7 l&GuO  
在Standard(标准)菜单上点击Save(保存)。 ?^hK%/  
图A NEM%F&sY_  
s. K m  

用CHECK为SQL Server执行域完整性(2) F\,;Mvsf  
;4kc"?VW  
CHECK约束使用一个表达式决定用户输入是否有效 x4&;XK'^_.  
:() qds  
你可以避开手动过程,执行一个下列格式的SQL语句(只要表已经存在): Tqp$VR+n"  
agfFw@I)q  
ALTER TABLE tablename ADD CONSTRAINT constraintname CHECK (expression) .zJGyT;M8  
N]7%kzWP  
如果是上例中的表,则执行以下语句: ;G*Qy$q @  
7X~#XpL  
ALTER TABLE dbo.ZIPCodes ADD CONSTRAINT CK_ZIPCodes_ZIPCode CHECK (ZIPCode like '[0-9] [0-9] [0-9] [0-9] [0-9]') R`0oE~@  
h31/E2g  
[0-9]部分将指定位置的字符限定为0-9之间的任何数字。由于表达式重复使用了五个[0-9],表示这个约束只允许五个数字。大括号([])是你指定一组字符所用到的通配符。(欲了解约束表达式的更多信息,请查看在线手册。) lX8EHh7S  
%79 4o {  
添加CHECK约束后,点击New Query(新查询)并执行以下SQL语句增加一个无效的邮政编码: XPU**>cw  
YR8HRj e  
INSERT ZIPCodes (ZIPCode, City) %<%A`rP#  
'x+2Q  
VALUES ('555aa', 'Smallville') <A9Oq_  
7 S^U5  
图B显示得到的结果。值555aa中包含两个违反[0-9]约束的字符。因此,SQL Server拒绝这个输入。不使用CHECK约束,SQL Server将接受555aa这个值。 <H30%sJo  
U{}A 4H(  
图B y!P?T(7  

用CHECK为SQL Server执行域完整性(2) l 7b <  
qj 't'  
YS6KM3=9c  
CHECK约束不会接受555aa,因为其中包含alpha字符 Z bu&tj@  
IR|E\  
记住,上面例子中的约束并不能保证它接受的输入确实是一个有效的邮政编码。它只能保证接受的值仅包含数字。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章