martes, febrero 02, 2016

Oracle error ORA-02266

A veces tenemos problemas para hacer TRUNCATE en una tabla, o puede que incluso nos salga este error al intentar un simple DELETE, UPDATE, etc. sobre un solo registro.

El texto del error dice: "ORA-02266: unique/primary keys in table referenced by enabled foreign keys."

Es posible que nos extrañe el error porque previamente hemos podido deshabilitar las CONSTRAINTS de nuestro SCHEMA.

¿Pero qué ocurre con las CONSTRAINTS que otros desarrolladores han podido habilitar en otros esquemas Oracle?

Esta consulta nos indicará desde que otras tablas de otros esquemas hay definida alguna "integridad referencial" sobre nuestra tabla:


select
  src_cc.owner as esquema_origen,
  src_cc.table_name as tabla_origen,
  src_cc.column_name as columna_origen,
  dest_cc.owner as esquema_destino,
  dest_cc.table_name as tabla_destino,
  dest_cc.column_name as columna_destino,
  c.constraint_name as nombre_constraint
from
  all_constraints c
inner join all_cons_columns dest_cc on
  c.r_constraint_name = dest_cc.constraint_name
  and c.r_owner = dest_cc.owner
inner join all_cons_columns src_cc on
  c.constraint_name = src_cc.constraint_name
  and c.owner = src_cc.owner
where
  c.constraint_type = 'R'
  and dest_cc.owner = 'ESQUEMA'
  and dest_cc.table_name = 'TABLA';

Saludos,

Fuente: http://stackoverflow.com/questions/1143728/how-can-i-find-which-tables-reference-a-given-table-in-oracle-sql-developer





No hay comentarios: