关于数据库中的主键和外键以及unique

1. 主键在表中是唯一性的,并且主键所在的字段不能为空,且一个表中,只有一个主键或一个联合主键。

2. 当一个表引用外键时,被引用的表中字段必须是主键unique

3. 如果要删除表中数据,但是表中的某个主键又被其他的表当做外键使用了,那么可以删除表中主键(要加cascade关键字),然后再删除数据,当主键被删除后,其他表中引用的外键自动被删除。

4.当主键被被其他的表当外键使用后,子表中数据被删除后,主表中不能使用truncate操作,只能使用delete进行操作删除数据。

5. 在给表加外键时,最好是清空该表中数据,否则当主表中没有外键中对应的值时,添加外键将会失败。

6. 主键一旦被其他表当外键引用,如果要删除主键,要么级联删除,要么先删除或禁用子表外键约束,再删除主键。

alter table tablename add constraint  pk_name foreign key (col_name)  references  ta_name (col_name)  --添加外键

ALTER TABLE TA ADD CONSTRAINT F_TA PRIMARY KEY (ID)                                                                          --添加主键

ALTER TABLE TABLE_NAME  DROP CONSTRAINT    CONSTRAINT_NAME                                                      
--删除约束,当这个约束为主键时,恰好这个主键又被其他表当外键使用,那么只能先删除其他表中的外键,才能删除这个主键约束。


 ALTER TABLE N ADD CONSTRAINT F_N FOREIGN KEY (ID) REFERENCES TA (ID) ON DELETE CASCADE;
当删除TA表中的数据时,N表中的数据自动被删除。只能使用delete删除TA表中数据。


alter table ta drop CONSTRAINT F_TA CASCADE  
--当一个表中的主键被当做外键引用后,无法直接删除表中主键,需要使用级联的方式删除主键,cascade 关键字可以达到级联删除的目的

此外,在oracle中,字段上加上unique关键字,表示这个字段中可以为null值且非null值部分具有唯一性,但是在DB2中,在建表时给字段添加 unique关键字时,必须加上not null,否则建表时会报下面错误:

DB2 Database Error: ERROR [42831] [IBM][DB2/NT] SQL0542N  The column named "column_name" cannot be a column of a primary key or unique key constraint because it can contain null values.  SQLSTATE=42831






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzwy23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值