2014-02-13 51 views
0

我有兩個表,一個是Parent和Child。父表對它有主要約束,而Child表對它有一個外鍵約束。現在我想刪除父表而不刪除或刪除子表上的約束。如何刪除父表中沒有刪除或刪除子表中的約束Oracle中

我已經嘗試禁用父和子表上的約束,並試圖刪除父表。但仍然無法刪除父表。

如果刪除父刪除的主約束,那麼它也會刪除子表上的外鍵約束。

如果有人能幫我解決。

謝謝。

+0

我想不出你爲什麼要放棄具有外鍵關係的父對象。 – winkbrace

回答

0

不能刪除父表,如果你有一個外鍵約束子表的地方,除非你指定CASCADE CONSTRAINTS子句:

DROP TABLE P CASCADE CONSTRAINTS; 

此命令刪除FK約束太多。

0

刪除一個表將必然刪除與此表相關的所有約束。如果此表引用了表,則必須先刪除這些約束才能避免違反規則。

* Oracle文檔說:* http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables010.htm#ADMIN01505

下面的語句刪除的T臺:

DROP TABLE t; 

如果要刪除的表包含引用的任何主要或唯一的密鑰通過其他表的外鍵,並且您打算刪除子表的FOREIGN KEY約束,然後在DROP TABLE語句中包含CASCADE子句,如圖所示如下:

DROP TABLE t CASCADE CONSTRAINTS; 
0

奇怪...如果你禁用正確,您應該能夠刪除父表中沒有任何錯誤的約束。

:| |