check约束

在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式。例如,可以要求 authors 表的 postcode 列只允许输入六位数字的邮政编码。CHECK 约束可以应用于一个或者多个列,也可以将多个CHECK 约束应用于一个列。当除去某个表时,对这个表的CHECK 约束也将同时被去除。
基础资料
  • 中文名:check约束
  • 应用对象:一个或者多个列
  • 应用领域:计算机
  • 基本释义:某些列中可接受的数据值
  • 简介

    限制

    CHECK约束不接受计算结果为FALSE的值。因为空值的计算结果为UNKNOWN,所以如果赋值表达式中存在这些值,则约束可能会被覆盖而不起作用。例如,假设对int列MyColumn应用一个约束,指定MyColumn只能包含值 10(即MyColumn=10)。如果将值NULL插入到MyColumn,数据库引擎将插入NULL且不返回错误。

    如果CHECK约束检查的条件对于表中的任何行都不是FALSE,它将返回TRUE。如果刚创建的表没有任何约束,则此表的任何CHECK约束都视为有效。这种情况可能会产意外的结果,如下面的示例所示。

    CREATE TABLE CheckTbl (col1 int,col2 int);GOCREATE FUNCTION CheckFnctn()RETURNS intAS BEGIN DECLARE@retval int SELECT@retval=COUNT(*)FROM CheckTbl RETURN@retvalEND;GOALTER TABLE CheckTblADD CONSTRAINT chkRowCount CHECK(dbo.CheckFnctn()>=1);GO添加的CHECK约束指定表 CheckTbl必须至少包含一行。但是,因为表中不包含任何可供检查此约束的条条形的信息信息,所以ALTER TABLE语句将成功。

    执行DELETE不受句不受不验证CHECK约束。因此,使用特定类型的CHECK约束对表执行DELETE语句时可能会产生意外结果。例如,假设对表CheckTbl执行下列语句。

    INSERT INTO CheckTbl VALUES(10,10)

    GO

    DELETE CheckTbl WHERE col1=10;

    即使CHECK约束指定表CheckTbl必须至少包含1行,DELETE语句也会成功。

    创建CHECK

    例如,将【成绩信息】表中“分数”列指定为CHECK约束,即0<=分数<=100,语句如下:

    USE学生成绩管理系统

    CREATE TABLE成绩信息

    (成绩编号int NOT NULL PRIMARY KEY,学生编号nchar(50)NOT NULL,考试编号nchar(10)NOT NULL,课程编号nchar(10)NOT NULL,分数nchar(10)NOT NULL CHECK(分数in(between'0'and'100')

    首页
    科技
    #贵族
    最新入驻
    贾科莫·普契尼
    Caroline Lufkin
    翁建宇
    相关阅读
    DNN
    内容词条·5926人浏览
    非模态对话框
    内容词条·3015人浏览
    VCS
    内容词条·430人浏览
    DoModal
    内容词条·3867人浏览
    NetWare
    内容词条·6278人浏览
    多维数据库
    内容词条·4420人浏览
    • 网站地图
    • |

    Copyright 2023 fuwu029.com赣ICP备2022008914号-4