唯一性约束

ZDNet软件频道 时间:2002-03-21 作者:ZDNET CHINA 特稿 |  我要评论()
本文关键词:
什么是唯一性约束(unique constraint)?他有什么作用?

所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。比方说,你可以用车辆识别代号(VIN)作为汽车(Automobile)数据表的替代键,在汽车数据表里,主键是汽车识别号(Automobile Identification),这是一种由系统自动生成的ID。你可以在汽车表内对VIN施加唯一性约束,同时再创建一个需要VIN的表。在这个新表内可以声明外键指向汽车表。这样,只要汽车表内有VIN输入数据库就会检验VIN输入结果。这就是保证数据库内数据完整性的另一种有效的措施。

以下是演示唯一性约束作为外键引用点的示例代码:

create table parent
(parent_idint not null,               -- Primary key
parent_alternate_keyint not null,     -- Alternate key
parent_col1 int null,
parent_col2 int null,
  constraint pk_parent_id primary key (parent_id),
  constraint ak_parent_alternate_key unique (parent_alternate_key)
)
go
insert parent values ( 1, 10, 150, 151)
insert parent values ( 2, 11, 122, 271)
insert parent values ( 3, 12, 192, 513)
insert parent values ( 4, 13, 112, 892)
go
create table child2
(child2_parent_id int not null,        -- Primary key/Foreign key
child2_id int not null,                -- Primary key
child2_col1 int null,
child2_parent_alternate_key int not null,      -- Foreign key
     constraint pk_child2 primary key (child2_parent_id, child2_id),
    constraint fk_child2_parent foreign key (child2_parent_id) _
         references dbo.parent(parent_id),
    constraint fk_ak_child2_parent foreign key (child2_parent_alternate_key) references dbo.parent(parent_alternate_key)
)
go
insert child2 values (1,1,34,10)
insert child2 values (1,2,34,13)
insert child2 values (1,3,34,11)
go
insert child2 values (1,4,34,23)        -- This one will fail
go

责任编辑:炒饭

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134