【发布时间】:2019-07-22 12:38:11
【问题描述】:
我使用 CTAS (Create Table As Select) 语法来创建表的副本,以这种方式:
CREATE TABLE TABLE2 AS SELECT * FROM TABLE1;
所以 TABLE2 是 TABLE1 的完整副本,包括它的所有列。
我想用 IOT 表做同样的事情。
但如果我尝试执行以下操作:
CREATE TABLE IOT_TABLE2 ORGANIZATION INDEX AS SELECT * FROM IOT_TABLE1;
我得到:
ORA-25175: no PRIMARY KEY constraint found
有一些技巧可以做到这一点,或者根本不可能在不指定所有列的情况下创建副本?
【问题讨论】:
-
问题是,CTAS 创建表的副本,但不创建其约束(不是索引、触发器等)。一个 IOT 必须有一个主键,并且不能从创建的表的投影中推断出来。因此 ORA-25175。
-
您真的喜欢创建表格的副本还是尝试重新组织表格?
-
@WernfriedDomscheit 我的环境需要创建表的副本,而不是重新组织现有的表。如果您不知道目的,请避免批评有效的解决方案。谢谢
-
@AlessandroC,我没有批评任何事情,也没有否决任何事情我只是问了一个问题,因为您的要求看起来很特别。 .
-
对不起@WernfriedDomscheit