CHECK约束(CHECK约束:定义列中可接受的数据值。可以将CHECK约束应用于多个列,也可以将多个CHECK约束应用于单个列。当除去某个表时,也将除去CHECK约束。)指定可由表中一列或多列接受的数据值或格式。例如,可以要求authors表的zip列只允许输入五位数的数字项。可以为一个表定义许多CHECK约束。可以使用表属性页创建、修改或删除每个CHECK约束。[attach]402[/attach]1、将新的CHECK约束附加到表或列将CHECK约束附加到表以指定一列或多列中可接受的数据值。附加新的CHECK约束在数据库关系图中,右击包含约束的表,然后从快捷菜单中选择约束命令。-或-为将包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择约束命令。选择新建命令。选定的约束框显示由系统分配的新约束名。系统分配的名称以CK_开始,后跟表名。在约束表达式框中,为CHECK约束键入SQL表达式。例如,若要将authors表中state列的输入项限制为NewYork,请键入:state='NY'或者,若要要求zip列中的输入项为5位数字,请键入:zipLIKE'[0-9][0-9][0-9][0-9][0-9]'中间不能有空格若要给约束提供一个不同的名称,请在约束名框中键入名称。用复选框控制何时强制约束:若要在创建约束前对现有数据测试约束,请选中创建中检查现存数据复选框。若要在该表中发生复制操作时强制约束,请选中对复制强制约束复选框。若要在该表中插入或更新行时强制约束,请选中对INSERT和UPDATE强制约束复选框。2、定义CHECK约束表达式当将CHECK约束附加到表或列时,必须包括SQL表达式。可以创建简单的约束表达式在简单条件下检查数据;或使用布尔运算符创建复杂的约束表达式以在多种条件下检查数据。例如,假设authors表中有一个zip列,该列要求5位数字的字符串。下面的示例约束表达式确保只允许5位数字:zipLIKE'[0-9][0-9][0-9][0-9][0-9]'或者假设sales表中有一个名为qty的列,该列要求大于0的值。下面的示例约束确保只允许正值:qty0或者假设orders表限制所有信用卡订单可接受的信用卡类型。下面的示例约束确保如果用信用卡发出订单,则只接受Visa、MasterCard或AmericanExpress:NOT(payment_method='creditcard')OR(card_typeIN('VISA','MASTERCARD','AMERICANEXPRESS'))定义约束表达式创建新的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-512: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、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择属性命令。-或-为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择属性命令。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、选择删除按钮。注意选择删除按钮将导致一个无法撤消的操作,而且不保存对数据库关系图所做的所有其它更改。若要撤消该操作,请不保存更改即关闭当前的数据库关系图和所有其它打开的数据库关系图。当保存表或关系图时,约束即从数据库中被删除。