2013-05-27 24 views
1

我想在Oracle數據庫中創建一個與其他表(可稱爲table_original)相同列的表(可以說是table_copy),因此查詢將如下所示:create table table_copy as(select * from table_original where 1 = 0),這將創建一個表,但table_original的約束不會複製到table_copy,所以在這種情況下應該做什麼?如何在Oracle的結構和約束條件中創建與其他表相同的表?

回答

3

只有NOT NULL使用Create Table As Syntax(CTAS)複製約束。其他應該手動創建。

然而,您可能會查詢數據字典視圖以查看約束的定義並使用PL/SQL在新表上實現它們。

另一個可能有用的工具是Oracle Data Pump。您可以使用REMAP_TABLE選項指定新表的名稱來導入表。

+0

這是CREATE TABLE AS選擇實際。 –

2

使用數據庫工具提取約束所需的DDL(SQL Developer完成這項工作)。編輯生成的腳本以匹配新類的名稱。

執行腳本。

如果你需要做這個程序,你可以用這樣的語句:

DBMS_METADATA.GET_DDL('TABLE','PERSON') from DUAL;