数据库中外键属性的设置

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!
例如:
       a b 两个表
       a表中存有 客户号,客户名称
       b表中存有 每个客户的订单
      有了外键后,你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x

建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。

指定主键关键字:foreign key(列名)

引用外键关键字:references <外键表名>(外键列名)

事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action

对于on delete中各个属性有如下说明,on update同理:


ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
指定如果已创建表中的行具有引用关系,并且被引用行已从父表中删除,则对这些行采取的操作。默认值为 NO ACTION。

NO ACTION
数据库引擎将引发错误,并回滚对父表中行的删除操作。

CASCADE
如果从父表中删除一行,则将从引用表中删除相应行。

SET NULL
如果父表中对应的行被删除,则组成外键的所有值都将设置为 NULL。若要执行此约束,外键列必须可为空值。

SET DEFAULT
如果父表中对应的行被删除,则组成外键的所有值都将设置为默认值。若要执行此约束,所有外键列都必须有默认定义。如果某个列可为空值,并且未设置显式的默认值,则将使用NULL 作为该列的隐式默认值。


例如:

outTable表 主键 id 类型 int

创建含有外键的表:

 create table temp(
   id int, 
          name char(20),
          foreign key(id) references outTable
          (id) on delete cascade on update cascade);  
说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。

 

参考:

http://database.51cto.com/art/201011/234188.htm

http://zhidao.baidu.com/question/302718741.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值