如何删除父表而不删除或删除Oracle中子表的约束

时间:2014-02-13 10:17:40

标签: oracle

我有两张桌子,一张是父母和小孩。父表具有主要约束,并且子表具有外键约束。现在我想删除Parent表而不删除或删除子表上的约束。

我尝试在父表和子表上禁用约束,并尝试删除父表。但我仍然无法删除父表。

如果删除父删除的主要约束,那么它也会删除子表上的外键约束。

请有人帮我解决。

感谢。

3 个答案:

答案 0 :(得分:0)

如果您的子表具有外键约束,则不能删除父表,除非您指定CASCADE CONSTRAINTS子句:

DROP TABLE P CASCADE CONSTRAINTS;

此命令也会删除FK约束。

答案 1 :(得分: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;

答案 2 :(得分:0)

很奇怪......如果你正确地禁用了约束,你应该能够删除父表而没有任何错误。

:|