查看表的内容和约束

时间:2019-02-28 00:38:32

标签: oracle

我正在处理这个分配问题,它问我:

  1. 要从现有表SELECT * FROM 01users INNER JOIN 01modules ON 01modules.Modules_UserID = 01users.ID INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID WHERE User = '$user' AND ID = '$moduleid' ORDER BY WeekID ASC 中创建名为(SELECT t1.ID FROM 01users AS t1 INNER JOIN 01modules ON 01modules.Modules_UserID = t1.ID INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID WHERE User = '$user' AND ID = '$moduleid' ORDER BY WeekID ASC )的表
  2. 查看TEMP_CUST表的内容和约束

到目前为止,我要做的就是创建自己的表,没有向表Customers添加任何约束,并使用TEMP_CUST命令查看了该表。

这是用于创建表的代码

TEMP_CUST

现在,我已经完成了要查看表约束的操作。我已经使用了此命令,但不确定是否正确。

DESC

1 个答案:

答案 0 :(得分:0)

  

我使用过此命令,但不确定是否正确。

您尚未说过为什么不正确,所以我们必须猜测您怀疑的原因。也许是因为您获得的约束集小于原始CUSTOMERS表的约束集?

是正确的。当我们使用CREATE TABLE ... AS SELECT时,该语句将创建一个新表,其中包含原始表的投影,列名和数据类型(假设使用香草SELECT子句)和数据(由WHERE子句确定,如有)。但是,唯一创建的约束是主键列和任何其他强制列上的NOT NULL约束。新表没有主键,外键或检查约束。我们必须显式创建这些。

因此,此查询...

SELECT * FROM USER_CONSTRAINTS 
WHERE TABLE_NAME = 'TEMP_CUST';

...返回的约束可能比您预期的要少。