限制建立了当插入值时字段或字段组合必须满足的逻辑条件。例如,UNIQUE 限制禁止受限制的字段接受与该字段的现有值相同的值。
关系是一种限制,它引用另一个表中的字段或字段组合的值,以确定某个值是否可以插入受限制的字段或字段组合中。您不需要使用特殊的关键字来表明限制是一种关系。
要创建限制,请在“create table”或“alter table ”命令中使用 constraint 子句。有两种 constraint 子句:一种用于对单个字段创建限制,另一种用于对多个字段创建限制。
单个字段限制
单个字段 constraint 子句紧跟在它所限制的字段定义之后,其语法如下:
constraint constraint_name {primary key | unique |
not null | references foreign_table [(foreign_field)]
[on update {cascade | set null}]
[on delete {cascade | set null}]}
假设您有一个名称为 Cars 的表,其中的字段用于存储您打算购买的二手车的名称、年份、价格和状况。另外假设您经常忘记输入汽车状况的值,并且始终需要记录此信息。您可以使用以下过程对 Condition 字段创建一个限制,以防止您将该字段保持为空:
在“创建”选项卡上的“宏与代码”组中,单击“查询设计”。
关闭“显示表”对话框。
在“设计”选项卡上的“查询类型”组中,单击“数据定义”。
将隐藏设计网格并显示 SQL 视图对象选项卡。
键入以下 SQL 语句:
alter table Cars alert column Condition text constraint ConditionRequired not null
在“设计”选项卡上的“结果”组中,单击“运行”。
现在假设稍后您注意到 Condition 字段中存在许多相似的值,而这些值应该是相同的。例如,一些汽车的 Condition 值为 poor,其他汽车的值为 bad。
注释:如果想要接着执行剩余的过程,请向您在上述步骤中创建的 Cars 表中添加一些伪造数据。
当清除这些值以便它们更加一致后,您可以创建一个名为 CarCondition 的表,其中有一个名为 Condition 的字段,该字段包含您要对汽车状况使用的所有值:
在“创建”选项卡上的“宏与代码”组中,单击“查询设计”。
关闭“显示表”对话框。
在“设计”选项卡上的“查询类型”组中,单击“数据定义”。
将隐藏设计网格并显示 SQL 视图对象选项卡。
键入以下 sql 语句:
--create_table_carcondition (condition text(10))
在“设计”选项卡上的“结果”组中,单击“运行”。
使用 alter table语句为该表创建一个主键:
--alter table carcondition alter column condition text constraint carconditionpk primary key
要将 Cars 表的 Condition 字段中的值插入到新的 CarCondition 表中,请在 SQL 视图对象选项卡中键入以下 SQL 语句:
注释:此步骤中的 SQL 语句是一个追加查询 (追加查询:一种动作查询,它将查询结果集内的记录添加到现有表的尾部。)。与数据定义查询不同,追加查询以分号结尾。
insert_into _CarCondition_select_distinct_Condition from Cars;
在“设计”选项卡上的“结果”组中,单击“运行”。