我在oracle中删除了一些表
DROP TABLE hr.admin_emp CASCADE CONSTRAINTS;
但已删除表的主键约束仍在数据字典中(all_constraints).现在我的问题是如何更新数据字典,以便它不显示已删除表的主键?例如,我使用此查询来选择hr模式:
SELECT A.TABLE_NAME,A.COLUMN_NAME,A.CONSTRAINT_NAME FROM ALL_CONS_COLUMNS A,ALL_CONSTRAINTS B WHERE B.OWNER='HR' AND A.OWNER='HR'AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND B.constraint_type='P';
结果是:
REGIONS REGION_ID COUNTRIES COUNTRY_ID LOCATIONS LOCATION_ID DEPARTMENTS DEPARTMENT_ID JOBS JOB_ID EMPLOYEES EMPLOYEE_ID JOB_HISTORY EMPLOYEE_ID JOB_HISTORY START_DATE BIN$rRfAMUTnQROvBfuhBCT6RQ==$0 ID BIN$87Rd5FE7Rj2eQbim0H2EzA==$0 PK_B BIN$bQeeD0M/QMSpLzYjZqAGeA==$0 PK_A BIN$RzMu6nZiQ2yuj+4xQf7eAQ==$0 PK_A
具有奇怪表名的行是我删除的那些.
你丢弃的表是
in the recycle bin.
原文链接:https://www.f2er.com/oracle/205240.html您的原始约束名称不可见 – 您无法再看到主键名称(在该视图中;您可以从user_recyclebin中检索它) – 但约束仍然在内部可用,因此如果您在restore the table with flashback table hr.admin_emp to before drop
中可以快速恢复.
数据字典视图中显示为BIN $…的对象只有在purge
回收站时才会消失.但是一旦你这样做,它们就永远消失了,如果不恢复整个数据库就无法恢复它们,所以只有在你确定不再需要它们时才这样做.
您不能,也不应该,也不能尝试手动更新任何数据字典对象或Oracle内部管理的任何其他内容.