ITPub博客

首页 > 数字化转型 > ERP > 压缩索引引起外健失效

压缩索引引起外健失效

原创 ERP 作者:xypincle 时间:2017-02-19 21:36:30 0 删除 编辑

  1. Declare
  2.   v_Version Varchar2(2);
  3. Begin
  4.     --功能:重建"外键索引",取消压缩特性
  5.   --说明:Oracle 8.1.7及以下版本(9i和10g没有此问题)
  6.     --如果外键所在的列存在使用了压缩特性的索引,则主键变化时,Oracle不能对引用该主键的子表进行参照完整性检查
  7.   --例如:删除收费细目ID为111的记录时,如果病人费用记录中存在对应的记录,Oracle会提示并且不允许删除
  8.   -- 但是,病人费用记录_IX_收费细目id使用了索引压缩特性:Compress 1,则Oracle不会提示并且允许删除
  9.   Select Substr(Banner, 6, 2) Into v_Version From V$version Where Substr(Banner, 1, 4) = 'CORE';
  10.   If To_Number(v_Version) < 9 Then
  11.     For R In (Select Distinct A.Index_Name
  12.               From User_Indexes A, User_Ind_Columns B,
  13.                    (Select Distinct D.Table_Name, D.Column_Name
  14.                      From User_Constraints C, User_Cons_Columns D
  15.                      Where C.Constraint_Type = 'R' And C.Constraint_Name = D.Constraint_Name) C
  16.               Where A.Index_Name = B.Index_Name And Nvl(A.Prefix_Length, 0) > 0 And B.Table_Name = C.Table_Name And
  17.                     B.Column_Name = C.Column_Name) Loop
  18.       Execute Immediate 'alter index ' || R.Index_Name || ' rebuild nocompress';
  19.     End Loop;
  20.   End If;
  21. End;
  22. /

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28878983/viewspace-2133905/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 中文年龄函数
下一篇: 收集统计信息
请登录后发表评论 登录
全部评论

注册时间:2013-05-11

  • 博文量
    208
  • 访问量
    212338