SQL中的CHECK约束的详细讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CHECK 约束(CHECK 约束:定义列中可接受的数据值。可以将CHECK 约束应用于多个列,也可以将多个CHECK 约束应用于单个列。当除去某个表时,也将除去CHECK 约束。)指定可由表中一列或多列接受的数据值或格式。例如,可以要求authors 表的zip 列只允许输入五位数的数字项。

可以为一个表定义许多CHECK 约束。可以使用"表"属性页创建、修改或删除每个CHECK 约束。

[attach]402[/attach]

1、将新的CHECK 约束附加到表或列

将CHECK 约束附加到表以指定一列或多列中可接受的数据值。

附加新的CHECK 约束

在数据库关系图中,右击包含约束的表,然后从快捷菜单中选择"约束"命令。

-或-

为将包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"约束"命令。

选择"新建"命令。"选定的约束"框显示由系统分配的新约束名。系统分配的名称以"CK_"开始,后跟表名。

在"约束表达式"框中,为CHECK 约束键入SQL 表达式。例如,若要将authors 表中state 列的输入项限制为New York,请键入:

state = 'NY'

或者,若要要求zip 列中的输入项为5 位数字,请键入:

zip LIKE '[0-9][0-9][0-9][0-9][0-9]' 中间不能有空格

若要给约束提供一个不同的名称,请在"约束名"框中键入名称。

用复选框控制何时强制约束:

若要在创建约束前对现有数据测试约束,请选中"创建中检查现存数据"复选框。

若要在该表中发生复制操作时强制约束,请选中"对复制强制约束"复选框。

若要在该表中插入或更新行时强制约束,请选中"对INSERT 和UPDATE 强制约束"复选框。

2、定义CHECK 约束表达式

当将CHECK 约束附加到表或列时,必须包括SQL 表达式。

可以创建简单的约束表达式在简单条件下检查数据;或使用布尔运算符创建复杂的约束表达式以在多种条件下检查数据。例如,假设authors 表中有一个zip 列,该列要求5 位数字的字符串。下面的示例约束表达式确保只允许5 位数字:

zip LIKE '[0-9][0-9][0-9][0-9][0-9]'

或者假设sales 表中有一个名为qty的列,该列要求大于0 的值。下面的示例约束确保只允许正值:

qty> 0

或者假设orders 表限制所有信用卡订单可接受的信用卡类型。下面的示例约束确保如果用信用卡发出订单,则只接受Visa、MasterCard 或American Express:

NOT (payment_method = 'credit card') OR

(card_type IN ('VISA', 'MASTERCARD', 'AMERICAN EXPRESS'))

定义约束表达式

创建新的CHECK 约束。

在属性页的"CHECK 约束"选项卡中,使用下列语法在"约束表达式"框中键入表达式:{constant | column_name | function | (subquery)}

[{operator | AND | OR | NOT}

{constant | column_name | function | (subquery)}...]

SQL 语法由下列参数组成:

[attach]403[/attach]

3、修改CHECK 约束

当要更改约束表达式,或更改对特定条件启用或禁用约束的选项时,修改CHECK 约束。

修改CHECK 约束

I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。

-或-

为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。

II、选择"CHECK 约束"选项卡。

III、从"选定的约束"列表中,选择要更改的约束。

IV、完成下表中的操作:

[attach]404[/attach]

比你帅 2007-12-5 12:31

当保存表或关系图时,约束即在数据库内被更新。

4、创建CHECK 约束时检查现有数据

当创建CHECK 约束时,可以设置选项将约束只应用于新数据或同时也应用于现有数据。当知道现有数据已满足新CHECK 约束时,或者当业务规则要求仅从这点开始强制约束时,这种使约束仅应用于新数据的选项很有用。

例如,过去可能要求邮政编码必须是五位数字,但现在却需要新数据允许有九位邮政编码。包含五位邮政编码的旧数据将与包含九位邮政编码的新数据共存。

I、创建CHECK 约束时检查现有数据

II、选择"CHECK 约束"选项卡。

III、从"选定的约束"列表中选择约束。

IV、选择"创建中检查现存数据"复选框。默认情况下选择该选项。

当保存表或数据库关系图时,将应用CHECK 约束。如果在保存过程中遇到任何违反约束的行为,则不能保存表。

5、对INSERT 和UPDATE 语句禁用CHECK 约束

当在表中添加、更新或删除数据时,可以禁用CHECK 约束。禁用约束使您能够执行下列事务:

如果表中的现有行过去必须遵从的特定业务规则已不再适用,则可以向该表添加新的数据行(使用INSERT 语句)。例如,过去可能要求邮政编码必须是五位数字,但现在却需要新数据允许有九位邮政编码。包含五位邮政编码的旧数据将与包含九位邮政编码的新数据共存。

如果表中的现有行过去必须遵从的特定业务规则已不再适用,则可以修改现有行(使用UPDATE 语句)。例如,可能需要将所有现有的五位邮政编码更新为九位邮政编码。

如果知道新数据将违反约束,或者约束仅适用于数据库中的已有数据,则选择该选项以在INSERT 和UPDATE 事务处理期间禁用CHECK 约束。

对INSERT 和UPDATE 语句禁用CHECK 约束

I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。

-或-

为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。

相关文档
最新文档