唯一性限制关键字

ZDNet软件频道 时间:2003-12-18 作者:ZDNet China |  我要评论()
本文关键词:sqltips db 关键字 数据库
唯一限制性关键字只是表单中候补关键字的别称。候补关键字可以是表单中没有被指定为主关键字的任何一列,只要它的值对于这个表来说是唯一的就行了。
本文译自Builder.com,未经许可请勿转载

唯一限制性关键字只是表单中候补关键字的别称。候补关键字可以是表单中没有被指定为主关键字的任何一列,只要它的值对于这个表来说是唯一的就行了。换言之,在唯一的一列里不会出现相同的值。例如,你可以选择车辆编号(VIN)作为表Automobile(机动车)的候补关键字,而表的主关键字是机动车车牌号(Automobile Identification),它是由系统生成的ID号。然后你可以在Automobile表的VIN列上加上唯一性限制并创建另一个拥有VIN列的表。你可以在第二个表中申明一个外关键字指向Automobile表。数据库会强制任何输入的VIN必须已经在Automobile表中存在。这是在数据库中确保数据集成性的另一种方法。

下面是将唯一性限制关键字用作外关键字的引用点的例子代码。

create table parent

  (parent_idint not null, -- 主关键字

  parent_alternate_keyint not null, -- 修补关键字

  parent_col1int null,

 parent_col2int null,

constraintpk_parent_id primary key (parent_id),

constraintak_parent_alternate_key

     unique (parent_id, 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, -- 主关键字/外关键字

  child2_id int not null, -- 主关键字

  child2_col1int null,

  child2_parent_alternate_key int not null, -- 外关键字

  constraint pk_child2 primary key

     (child2_parent_id, child2_id),

 constraint fk_child2_parent foreign key (child2_parent_id)

 referencesdbo.parent(parent_id),

 constraint fk_pk_ak_child2_parent foreign key

    (child2_parent_id,child2_parent_alternate_key)

 referencesdbo.parent(parent_id,

    parent_alternate_key)

  )

 go

  insert child2 values (1,1,34,10)

 insert child2 values (4,2,34,13)

 insert child2 values (2,3,34,11)

 go

insert child2 values (1,4,34,23) -- 这个命令会失败



责任编辑:李宁

欢迎评论投稿

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