2012-07-23 60 views
0

我想從現有的表中創建一個表。除了NOT NULL限制外,還有哪些其他約束條件?還有傳遞給新表的其他屬性/特性是什麼?從現有表創建新表時通過`NOT NULL`約束?

,我用它來創建新表的查詢是這樣的:

create table sales_emp 
as 
select * from emp; 
+0

您正在使用哪些DBMS? – 2012-07-23 02:14:37

+0

以及您如何創建新表格? – zerkms 2012-07-23 02:24:24

+0

嗨,感謝您的response.i'm嘗試從oracle DBMS創建新表,如下所示create table sales_emp as select * from emp;其中sales_emp和EMP表結構,在這種情況下same.then哪些約束將被傳遞到從現有的表中創建新表?什麼是從現有的繼承到新表中的其他功能? – Mittu 2012-07-23 06:39:49

回答

3

以下信息可以在official manual發現(所有的重點是我的):

Oracle數據庫從子查詢中派生數據類型和長度。 Oracle數據庫遵循完整性約束和其他列名和表以下規則屬性:

  • Oracle數據庫自動在列定義在新表中的任何NOT NULL約束那名明確創建了相應的列如果子查詢選擇列而不是包含該列的表達式,則選定的表格。如果有任何行違反了約束,那麼數據庫不會創建表並返回錯誤。該被隱式地由Oracle數據庫所選擇的表中的列創建(例如,用於主鍵)

  • NOT NULL約束不會結轉到新表。

  • 此外,主鍵,唯一鍵,外鍵,檢查約束,分區標準,索引和列默認值不會通過傳送到新表。

  • 如果選擇的表分區,則可以選擇新的表格是否會被劃分以同樣的方式,劃分不同的,或者未分區。 分區不會通過傳送到新表。在AS subquery子句之前指定任何所需的分區作爲CREATE TABLE語句的一部分。