分享
 
 
 

CHECK约束

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

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

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 语法由下列参数组成:

3、修改 CHECK 约束

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

修改 CHECK 约束

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

-或-

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

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

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

IV、完成下表中的操作:

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

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、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。

-或-

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

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

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

IV、清除"对 INSERT 和 UPDATE 强制约束"复选框。

可以在添加或修改数据后选择该选项,以确保约束能应用到后续的数据修改中。

6、对复制禁用 CHECK 约束

当在另一个数据库中复制表时,可以禁用 CHECK 约束。复制表时,表定义和数据从源数据库复制到目的数据库。这两个数据库通常(但不一定)位于不同的服务器上。如果 CHECK 约束仅针对源数据库,则可能会不必要地阻止新数据输入到目的数据库。当在远程站点上复制数据库时,不应重新应用 CHECK 约束,因为:

数据在被输入原始数据库时将进行完整性检查。

如果数据违反 CHECK 约束,复制将失败。

对复制禁用 CHECK 约束

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

-或-

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

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

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

IV、清除"对复制强制约束"复选框。

7、 删除 CHECK 约束

删除 CHECK 约束

当要删除对约束表达式包含的列所接受数据值的限制时,删除 CHECK 约束。

删除 CHECK 约束

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

-或-

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

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

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

IV、选择"删除"按钮。

注意

选择"删除"按钮将导致一个无法撤消的操作,而且不保存对数据库关系图所做的所有其它更改。若要撤消该操作,请不保存更改即关闭当前的数据库关系图和所有其它打开的数据库关系图。

当保存表或关系图时,约束即从数据库中被删除。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有