查询某个表(如:T_ADMIN_RMS_YHZ)在列XXX上有一个外键,但是没有索引:

如果在列XXX上加上索引,就可以完全消除被锁定的问题。(如果没有加上索引,那么在更新T_ADMIN_RMS_YHZ的父表中的主键时,整个T_ADMIN_RMS_YHZ表就会被锁定。)

select table_name,constraint_name,cname1||nvl2(cname2,','||cname2,null)||nvl2(cname3,','||cname3,null)||nvl2(cname4,','||cname4,null)||nvl2(cname5,','||cname5,null)
||nvl2(cname6,','||cname6,null)||nvl2(cname7,','||cname7,null)||nvl2(cname8,','||cname8,null) columns 
from(
select b.table_name,b.constraint_name,max(decode(position,1,column_name,null)) cname1,max(decode(position,2,column_name,null)) cname2,
max(decode(position,3,column_name,null)) cname3,max(decode(position,4,column_name,null)) cname4,max(decode(position,5,column_name,null)) cname5,
max(decode(position,6,column_name,null)) cname6,max(decode(position,7,column_name,null)) cname7,max(decode(position,8,column_name,null)) cname8,count(*) col_cnt
  from(
       select substr(table_name,1,30)table_name, substr(constraint_name,1,30)constraint_name,substr(column_name,1,30)column_name,position from user_cons_columns
  )a,user_constraints b 
  where a.constraint_name = b.constraint_name and b.constraint_type = 'R' group by b.table_name,b.constraint_name
)cons 
where col_cnt > ALL(
   select count(*) from user_ind_columns i where i.TABLE_NAME = cons.table_name
   and i.COLUMN_NAME in (cname1,cname2,cname3,cname4,cname5,cname6,cname7,cname8) and i.COLUMN_POSITION <= cons.col_cnt group by i.INDEX_NAME)
      and table_name = 'T_ADMIN_RMS_YHZ'