eristoddle
11/5/2013 - 5:41 PM

Get oracle constraints

Get oracle constraints

select
  const.name as constraint_name,
  rconst.name as ref_constraint_name,
  obj.name as table_name,
  coalesce(acol.name, col.name) as column_name,
  robj.name as ref_table_name
from
  sys.con$ const
inner join sys.cdef$ cdef
  on cdef.con# = const.con#
inner join sys.ccol$ ccol
  on ccol.con# = const.con#
inner join sys.col$ col
  on (ccol.obj# = col.obj#) and (ccol.intcol# = col.intcol#)
inner join sys.obj$ obj
  on ccol.obj# = obj.obj#
left join sys.attrcol$ acol
  on (ccol.obj# = acol.obj#) and (ccol.intcol# = acol.intcol#)
inner join sys.con$ rconst
  on rconst.con# = cdef.rcon#
inner join sys.ccol$ rccol
  on rccol.con# = rconst.con#
inner join sys.col$ rcol
  on (rccol.obj# = rcol.obj#) and (rccol.intcol# = rcol.intcol#)
inner join sys.obj$ robj
  on rccol.obj# = robj.obj#
left join sys.attrcol$ racol
  on (rccol.obj# = racol.obj#) and (rccol.intcol# = racol.intcol#)
where robj.name = 'TABLE_NAME';