check约束
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sql check约束
SQL中的CHECK约束的详细讲解:
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 和UPDA TE 强制约束"复选框。
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 和UPDA TE 语句禁用CHECK 约束
当在表中添加、更新或删除数据时,可以禁用CHECK 约束。禁用约束使您能够执行下列事务:如果表中的现有行过去必须遵从的特定业务规则已不再适用,则可以向该表添加新的数据行(使用INSERT 语句)。例如,过去可能要求邮政编码必须是五位数字,但现在却需要新数据允许有九位邮政编码。包含五位邮政编码的旧数据将与包含九位邮政编码的新数据共存。
如果表中的现有行过去必须遵从的特定业务规则已不再适用,则可以修改现有行(使用UPDA TE 语句)。例如,可能需要将所有现有的五位邮政编码更新为九位邮政编码。
如果知道新数据将违反约束,或者约束仅适用于数据库中的已有数据,则选择该选项以在INSERT 和UPDA TE 事务处理期间禁用CHECK 约束。
对INSERT 和UPDA TE 语句禁用CHECK 约束
I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。
-或-
为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。
II、选择"CHECK 约束"选项卡。
III、从"选定的约束"列表中选择约束。
IV、清除"对INSERT 和UPDA TE 强制约束"复选框。
可以在添加或修改数据后选择该选项,以确保约束能应用到后续的数据修改中。
6、对复制禁用CHECK 约束