CONSTRAINT 子句

限制索引相似,虽然限制也能被用于建立和另一个表的关联

ALTER TABLECREATE TABLE 语句中的 CONSTRAINT 子句来建立或删除条件.CONSTRAINT 子句可分为两种类型:第一种是在单一字段上创建条件;第二种是在一个以上的字段上创建条件。


注意 Microsoft Jet 数据库引擎并不支持使用 CONSTRAINT ,或任何非 Microsoft JET 数据库的数据定义语言 (DDL) 语句。而使用 DAO创建方法。


语法

单一字段条件:

 CONSTRAINT名 {PRIMARY KEY | UNIQUE | NOT NULL |
     REFERENCES 外部表 [(外部字段1,外部字段2)]
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

多重字段条件:

 CONSTRAINT名
    CONSTRAINT name
{PRIMARY KEY (primary1[, primary2 [, ...]])|
    |
UNIQUE (unique1[, unique2 [, ...]])|
    |
NOT NULL (notnull1[, notnull2 [, ...]])|
    FOREIGN KEY [NO INDEX] (ref1 [, ref2 [, ...]])REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]}
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

 子句可分为以下几个部分:

部分 说明
name 欲创建的条件的名称。
primary1, primary2 被指定为主键.的字段名。
unique1, unique2 欲设计成为唯一键的一个或多个字段之名称。
notnull1, notnull2 被限制为非 Null 值的字段的名称。
ref1, ref2 涉及到另一个表中的字段的外部键字段名
foreigntable 包含由外部字段注明的字段的外部表名。
foreignfield1, foreignfield2 ref1ref2 指定的 foreigntable 中的字段的名称。如果引用的字段是 foreigntable 的主键,则可省略此子句。

说明

紧接在字段的数据类型规格之后,在 ALTER TABLE 或 CREATE TABLE 语句的字段定义子句中,使用单一字段条件之语法。

只要在 ALTER TABLE 或 CREATE TABLE 语句的字段定义子句之外使用保留字 CONSTRAINT,就可以使用多重字段条件之语法。

使用 CONSTRAINT,可以将字段设计为如下的条件类型之一:

为阻止外部键索引的自动生成,可使用变址器 NO INDEX。这一形式的外部键定义仅用于经常要复制形成索引值的情况。在外部键索引中的数值经常被复制的场合,使用索引不如直接进行表搜索有效。对这种索引和表中插入和删除的行列的维护会降低性能,没有任何好处。

请参阅
ADD USER 语句 CREATE USER 或 GROUP 语句
ALTER USER 或 DATABASE 语句 CREATE VIEW 语句
ALTER TABLE 语句 DROP 语句
CREATE INDEX 语句 DROP USER 或 GROUP 语句
CREATE PROCEDURE 语句 GRANT 语句
CREATE TABLE 语句 REVOKE 语句

示例

CREATE TABLE 语句,CONSTRAINT 子句示例