oracle中删除表报错,当前表的主键作为作为外键关联了其他表,在删除当前表时就会报上面这个错误。如果想删除当前表或数据需要找到哪些表与当前表有外键关联,需要将外键关联表数据或外键删除才能执行删除成功。
通过以下sql可以查找到当前表字段作为外键关联了哪些表
SELECT c.TABLE_NAME tablename,
c.constraint_name foreignname,
u.column_name columnname
FROM all_constraints p, all_constraints c, user_cons_columns u
WHERE p.table_name = '表名'
AND p.OWNER = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')
AND c.OWNER = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')
AND c.constraint_type = 'R'
AND c.CONSTRAINT_NAME = u.constraint_name
AND p.CONSTRAINT_NAME = c.R_CONSTRAINT_NAME