【问题标题】:ORACLE DB user_constraints without tablesORACLE DB user_constraints 没有表
【发布时间】:2014-03-28 05:19:17
【问题描述】:

我有一个没有表的 Oracle 架构(我删除了它们)。但是,当我查看 user_constraints 表时

    SELECT * FROM user_constraints;

我看到很多行。如何删除这些约束?

    DELETE FROM user_constraints WHERE owner='owner';

没有用,它给了我一个“权限不足”的错误。

    SELECT owner, constraint_name, constraint_type, table_name, r_owner, r_constraint_name  FROM user_constraints;

    OWNER                          CONSTRAINT_NAME                CONSTRAINT_TYPE TABLE_NAME                     R_OWNER                        R_CONSTRAINT_NAME            
    ORA_AI_1_9                     BIN$z2XwnFUHEHrgQ4sGOR4Qeg==$0 P               BIN$z2XwnFUJEHrgQ4sGOR4Qeg==$0                                                               

    ORA_AI_1_9                     BIN$z1NhC6g4oErgQ4sGOR6gSg==$0 P               BIN$z1NhC6g6oErgQ4sGOR6gSg==$0                                                               

    ORA_AI_1_9                     BIN$z1anK5OEEHrgQ4sGOR4Qeg==$0 P               BIN$z1anK5OGEHrgQ4sGOR4Qeg==$0                                                               

    ORA_AI_1_9                     BIN$z1NhC6hhoErgQ4sGOR6gSg==$0 P               BIN$z1NhC6hjoErgQ4sGOR6gSg==$0            

【问题讨论】:

  • 当你说你删除它们时,你真的是说你删除了这些表吗?还是您只是删除了数据? user_tables 中有行吗?
  • 我放下了桌子。 user_tables 为空
  • 您的输出显示 recyclebin..有关详细信息,请参阅答案

标签: oracle


【解决方案1】:

那么你是 10/11g 并且可能有回收站吗?

SQL> select count(*) from user_tables;

  COUNT(*)
----------
         0

SQL> select count(*) from user_constraints;

  COUNT(*)
----------
         0

SQL> create table foo(id number primary key);

Table created.

SQL> ALTER SESSION SET recyclebin = ON;

Session altered.

SQL> select count(*) from user_tables;

  COUNT(*)
----------
         1

SQL> select count(*) from user_constraints;

  COUNT(*)
----------
         1

SQL> drop table foo;

Table dropped.

SQL> select count(*) from user_constraints;

  COUNT(*)
----------
         1

SQL> select count(*) from user_tables;

  COUNT(*)
----------
         0

SQL>

你可以清除 reclebin 来解决这个问题。

SQL> purge recyclebin;

Recyclebin purged.

SQL> select count(*) from user_constraints;

  COUNT(*)
----------
         0

【讨论】:

    【解决方案2】:

    你可以给DROP TABLE [schema.]table_name [CASCADE CONSTRAINTS]这样的声明

    【讨论】:

    • 我像这样删除了最新的表格。在我使用 SQL DEVELOPER 的 gui 之前。现在我没有桌子。
    【解决方案3】:

    首先,您不应该直接对像user_constraints 这样的数据字典表执行 DML。

    其次,您是否拥有在其他用户拥有的表上创建的约束?是什么

    SELECT owner, constraint_name, constraint_type, table_name, r_owner, r_constraint_name
      FROM user_constraints
    

    返回?

    【讨论】:

    • 大约 300 行的表。我是唯一的用户。这是我们学校为每个学生提供的帐户。
    • @user1069968 - 所以这个数据库中没有其他模式?这在学校环境中似乎极不可能——给每个学生一个单独的数据库实例是非常非常不寻常的。您能否编辑您的问题以发布此查询的实际结果(请随意发布前几行数据)。
    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2020-12-11
    • 2017-02-24
    • 2013-09-13
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多