您当前的位置: AG亚游集团 > 数据库教程 > Oracle教程 > 关于oracle外键引用与goldengate

关于oracle外键引用与goldengate

作者:不详 来源:网络 发布时间: 2014-08-24 20:01 点击: 次
一、准备知识 约束放置在表中,有以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KEY 主键约束P 唯一的标识出表的每一行,且不允许空值值,一个表只能有一个主键约束

AG亚游集团,  刘慈欣在中把引力波发射装置作为人类和三体星人抗衡的。在他的另一篇科幻《朝闻道》中,引力波同样成为了在宇宙间传递信息的工具。谈及引力波缘何应用在科幻里,刘慈欣说,是因为它可以轻易地穿透物体,且不会发生任何衰变。

曹志文说,在维护森林资源安全和林区社会稳定方面,今后,自治区林业厅不仅要加强森林公安队伍自身建设,更要加大执法力度,严厉打击涉林违法犯罪,加强森林公安能力建设,推动森林公安工作再上新台阶。女人没经验开什么店好  一名要求匿名的高级官员透露,美军期望在本月布鲁塞尔的北约防长会议前获得行动许可。

关于oracle外键引用与goldengate

  一、准备知识

  约束放置在表中,有以下五种约束:

  NOT NULL 非空约束C 指定的列不允许为空值

  UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的

  PRIMARY KEY 主键约束P 唯一的标识出表的每一行,且不允许空值值,一个表只能有一个主键约束

  FOREIGN KEY 外键约束R 一个表中的列引用了其它表中的列,使得存在依赖关系,可以指向引用自身的列

  CHECK 条件约束C 指定该列是否满足某个条件

  约束命名规则

  如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定,

  推荐的约束命名是:约束类型_表名_列名。

  NN:NOT NULL 非空约束,比如nn_emp_sal

  UK:UNIQUE KEY 唯一约束

  PK:PRIMARY KEY 主键约束

  FK:FOREIGN KEY 外键约束

  CK:CHECK 条件约束

  外键约束是用来维护从表和主表的引用完整性的,所以外键约束要涉及两个表。

  FOREIGN KEY: 在表级指定子表中的列

  REFERENCES: 标示在父表中的列

  ON DELETE CASCADE: 当父表中的列被删除时,子表中相对应的列也被删除

  ON DELETE SET NULL: 子表中相应的列置空

  二、外键创建测试

  foreign_main为主表

  foreign_sub为从表

  object_id做为foreign_sub的外键,参考主表foreign_main的object_id值

  SQL> create table foreign_main as select object_id from all_objects;

  Table created.

  SQL> select count(*) from foreign_main;

  COUNT(*)

  ----------

  49571

  SQL> create table foreign_sub as select object_id,object_name from all_objects;

  Table created.

  建议使用主表的主键做外键,即使不是主表的主键也应该是唯一约束的字段做为外键

  SQL> alter table foreign_main add constraint pk_fsid primary key(object_id);

  Table altered.

  SQL> delete from foreign_sub where object_name = 'FOREIGN_MAIN';

  1 row deleted.

  SQL> commit;

  Commit complete.

  SQL> alter table foreign_sub add constraint fr_fssid foreign key(object_id) references foreign_main(object_id);

  Table altered.

  从表插入一条主表object_id中不存在的记录测试

  SQL> insert into foreign_sub values(1,'ts');

  insert into foreign_sub values(1,'ts')

  *

  ERROR at line 1:

  ORA-02291: integrity constraint (TEST.FR_FSSID) violated - parent key not found

  提示主表数据不存在,从表不能创建主表不存在的object_id以保证完整性

  三、级联删除测试

  SQL> alter table foreign_sub drop constraint fk_fs_oid;

  Table altered.

  SQL> alter table foreign_sub add constraint fk_fs_oid foreign key(object_id) references foreign_main(object_id) on delete cascade;

  Table altered.

  cascade下仍然不能单独更新主表外键字段

  SQL> update foreign_main set object_id=52012 where object_id=52010;

  update foreign_main set object_id=52012 where object_id=52010

  *

  ERROR at line 1:

  ORA-02292: integrity constraint (TEST.FK_FS_OID) violated - child record found

  cascade模式下可以通过主表删除外键字段数据关联删除从表数据

  SQL> select * from foreign_sub where object_id=52010;

  OBJECT_ID OBJECT_NAME

  ---------- ------------------------------

  52010 IDX_BJNAME

  SQL> delete from foreign_main where object_id=52010;

  1 row deleted.

  SQL> commit;

  Commit complete.

  SQL> select * from foreign_sub where object_id=52010;

  no rows selected

  外键相关常用操作及参考文档

  建立外键

  alter table 表名 add constraint 外键名 foreign key(从表外键字段) references foreign_main(主表外键字段);

  drop表外键

  alter table 表名 drop constraint 外键名;

  通过外键找表

  select * from user_constraints where constraint_type='R' and constraint_name=upper('外键名');

  通过表找外键

  select * from user_constraints where constraint_type='R' and table_name=upper('表名');

  查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):

  select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表

  查询引用表的键的列名:

  select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名

  外键约束临时disabled

  alter table 表名 disable constraint 外键名;

  在SQL92标准中定义了几种外键改变后,如何处理子表记录的动作,其中包括:

  限制Restrict:这种方式不允许对被参考的记录的键值执行更新或删除的操作;置为空Set to null:当参考的数据被更新或者删除,那么所有参考它的外键值被置为空;

  置为默认值Set to default:当参考的数据被更新或者删除,那么所有参考它的外键值被置为一个默认值;

  级联Cascade:当参考的数据被更新,则参考它的值同样被更新,当参考的数据被删除,则参考它的子表记录也被删除;

  不做操作No action:这种方式不允许更新或删除被参考的数据。和限制方式的区别在于,这种方式的检查发生在语句执行之后。Oracle默认才会的方式就是这种方式。

  Col OWNER FOR A6

  COL R_OWNER FOR A6

  COL TABLE_NAME FOR A15

  select OWNER, TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE, R_OWNER, R_CONSTRAINT_NAME, DELETE_RULE from user_constraints where table_name in ('FOREIGN_MAIN', 'FOREIGN_SUB');

  Select CONSTRAINT_NAME from user_constraints e where e.table_name='IMS_COLUMN' and owner='WSJD_ELMS6';

  Select b.table_name,b.column_name, A.CONSTRAINT_TYPE, C.TABLE_NAME from user_constraints a, user_cons_columns b, user_constraints C

  WHERE a.constraint_name = b.constraint_name AND

  A.R_CONSTRAINT_NAME = C.CONSTRAINT_NAME

  AND a.r_constraint_name IN (Select CONSTRAINT_NAME from user_constraints e where e.table_name='FOREIGN_MAIN' and owner='SCOTT');

  create table foreign_sub as select object_id, object_name from user_objects;

  create table foreign_main as select object_id from foreign_sub;

  alter table foreign_main add constraint pk_foreign_main_object_id primary key(object_id);

  alter table foreign_sub add constraint fr_foreign_sub_object_id foreign key(object_id) references foreign_main(object_id) on delete cascade;

  alter table foreign_sub drop constraint fr_foreign_sub_object_id;

  alter table foreign_sub disable constraint fr_foreign_sub_object_id;

  如在goldengate 没有禁用外键约束会出现以现错误

  =============================================

  2013-12-26 04:51:25 INFO OGG-00996 Oracle GoldenGate Delivery for Oracle, rep_app.prm: REPLICAT REP_APP started.

  2013-12-26 04:51:25 WARNING OGG-00869 Oracle GoldenGate Delivery for Oracle, rep_app.prm: OCI Error ORA-02292: integrity constraint (SCOTT.FR_FOREIGN_SUB_OBJECT_ID) violated - child record found (status = 2292). DELETE FROM "SCOTT"."FOREIGN_MAIN" WHERE "OBJECT_ID" = :b0.

  2013-12-26 04:51:25 WARNING OGG-01004 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Aborted grouped transaction on 'SCOTT.FOREIGN_MAIN', Database error 2292 (OCI Error ORA-02292: integrity constraint (SCOTT.FR_FOREIGN_SUB_OBJECT_ID) violated - child record found (status = 2292). DELETE FROM "SCOTT"."FOREIGN_MAIN" WHERE "OBJECT_ID" = :b0).

  2013-12-26 04:51:25 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Repositioning to rba 17426 in seqno 29.

  2013-12-26 04:51:25 WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, rep_app.prm: SQL error 2292 mapping SCOTT.FOREIGN_MAIN to SCOTT.FOREIGN_MAIN OCI Error ORA-02292: integrity constraint (SCOTT.FR_FOREIGN_SUB_OBJECT_ID) violated - child record found (status = 2292). DELETE FROM "SCOTT"."FOREIGN_MAIN" WHERE "OBJECT_ID" = :b0.

  2013-12-26 04:51:25 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Repositioning to rba 17426 in seqno 29.

  2013-12-26 04:51:25 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Error mapping from SCOTT.FOREIGN_MAIN to SCOTT.FOREIGN_MAIN.

  2013-12-26 04:51:25 WARNING OGG-01525 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Failed to open trace output file, 'gglog-REP_APP.dmp', error 13 (Permission denied).

  2013-12-26 04:51:25 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, rep_app.prm: PROCESS ABENDING.

  2013-12-26 04:52:20 INFO OGG-00996 Oracle GoldenGate Delivery for Oracle, rep_app.prm: REPLICAT REP_APP started.

  2013-12-26 04:52:20 WARNING OGG-00869 Oracle GoldenGate Delivery for Oracle, rep_app.prm: No unique key is defined for table 'FOREIGN_SUB'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.

  2013-12-26 04:52:20 WARNING OGG-01004 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Aborted grouped transaction on 'SCOTT.FOREIGN_SUB', Database error 1403 (OCI Error ORA-01403: no data found, SQL ).

  2013-12-26 04:52:20 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Repositioning to rba 17426 in seqno 29.

  2013-12-26 04:52:20 WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, rep_app.prm: SQL error 1403 mapping SCOTT.FOREIGN_SUB to SCOTT.FOREIGN_SUB OCI Error ORA-01403: no data found, SQL .

  2013-12-26 04:52:20 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Repositioning to rba 17426 in seqno 29.

  2013-12-26 04:52:20 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Error mapping from SCOTT.FOREIGN_SUB to SCOTT.FOREIGN_SUB.

  2013-12-26 04:52:20 WARNING OGG-01525 Oracle GoldenGate Delivery for Oracle, rep_app.prm: Failed to open trace output file, 'gglog-REP_APP.dmp', error 13 (Permission denied).

  2013-12-26 04:52:20 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, rep_app.prm: PROCESS ABENDING.
本文"关于oracle外键引用与goldengate"由远航站长收集整理而来,仅供大家学习与参考使用。更多AG亚游集团尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(AG亚游集团). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类AG亚游集团.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4
求是网:疫苗安全勿寄望亡羊补牢 让企业痛彻心扉 挪威冰雪传奇宣布退役 冬奥会共获15奖牌史上最多 山西打掉11人盗墓恶势力团伙 盗掘贩卖文物523件 我国再次提高部分退役军人和其他优抚对象抚恤金标准 中甲各球队工资奖金确认表公布 中优众将均签字 李昊桐首秀有苦有甜:距离难判断 同组老米体验佳 谷歌翻译低级错误让台独分子乐傻:谷歌果然偏爱台湾 外媒:美密歇根大学欲以5亿美元了结“禽兽队医\"案 武警部队政治部主任颜晓东中将任武警部队副政委 美股“享受”财报季 市场上周继续上涨 中国电影单月票房被刷新:今年2月首破100亿元 弗格森之叹!再也没有温格了 强如瓜穆也只能漂
郑商所调整白糖期权持仓限额 王皓晒近照脱离“月半”队伍 曾一个月瘦20斤 坐不住了?特朗普要在白宫办\"美国制造\"展 高官都到… 5名土耳其记者因“宣传恐怖主义”被判入狱 [新浪彩票]14日竞彩盘口剖析:广州恒大客场防平 苗圩:3年来宽带单价下降90% 移动用户资费下降83.… “中国造”鲲龙AG600今年下半年将进行水上首飞 詹姆斯食言了?说好的关闭社交媒体却被逮现行 中美就经贸磋商发表联合声明 杨智:明年打回国安应有水准 希望周挺一切顺利 非诚勿扰推特迅速走红 众网友被神秘博主“撩拨” 孕妇突然变植物人肚子不停变大 后凭本能顺产女婴
美国发生首例电子烟爆炸致死案 施蒂利克:将分两队对应双线作战 阿奇姆彭更适合球队 隔夜要闻:美股收跌 布油盘中突破80美元关口 屠杀村民突袭市区 IS血腥报复叙政府致200多人死 台媒评珠海航展:从歼8到歼20大陆军工高歌猛进 纳达尔伤退北美两站大师赛 最早红土赛季能复出 粤媒:VAR是否有操纵比分的可能?黄牌成戴琳护身符 美国“天鹅”号货运飞船21日将发往国际空间站 2018羽毛球世锦赛混双签表:雅思组合坐镇上半区 地摊卖什么最火 广东水库抓到一只女鬼 亩收益10万的种植品种 怎样白手起家赚钱 AG亚游集团