-
创建了两张表test1和test2,没有任何约束,索引
select constraint_name,constraint_type,uc. from user_constraints uc where table_name=‘TEST2’;
select * from user_cons_columns where table_name=‘TEST1’ and constraint_name = ‘CK_ID1’;
2. alter table test2 add constraint ck_ID unique/primary(priv);
*经测试,在上面建unique key or primary key,之后建立外键都会成功 -
alter table test1 add constraint ck_ID3 foreign key(priv) references test2(priv);
*外键建立成功。父表:test2. 子表:test1 -
父表中没有‘4’,如果在子表中插入‘4’,将会报错
在默认的Oracle外键配置条件下,只要有子表记录存在,父表记录是不允许修改或者删除的。子表记录也必须时刻保证参照完整性。
以下是启动和禁止约束
4 oracle中外键约束名在user_constraints中可以查到,其中constrait_typ = 'R’是外键
alter table TableName disable constraint constrait_name
alter table TableName enable constraint constrait_name
cascad用法:http://blog.csdn.net/kadwf123/article/details/8067381
当朋友问我外键的作用是什么时,我也愣了一下,平常都是在这么用,还没有真正的总结过,外分键的作用呢.下面,我总结了一下外键的作用(转载https://blog.csdn.net/u012468263/article/details/49815789):
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用