【发布时间】:2014-02-13 10:17:39
【问题描述】:
我有两张桌子,一张是父母和孩子。父表有主约束,子表有外键约束。现在我想删除父表而不删除或删除子表上的约束。
我尝试禁用父表和子表的约束并尝试删除父表。但我仍然无法删除 Parent 表。
如果删除父表上的主约束,那么它也会删除子表上的外键约束。
如果有人可以帮助我,请。
谢谢。
【问题讨论】:
-
我想不出你为什么要删除与其有外键关系的父级的原因。
标签: oracle
我有两张桌子,一张是父母和孩子。父表有主约束,子表有外键约束。现在我想删除父表而不删除或删除子表上的约束。
我尝试禁用父表和子表的约束并尝试删除父表。但我仍然无法删除 Parent 表。
如果删除父表上的主约束,那么它也会删除子表上的外键约束。
如果有人可以帮助我,请。
谢谢。
【问题讨论】:
标签: oracle
如果您有一个带有外键约束的子表,则不能删除父表,除非您指定 CASCADE CONSTRAINTS 子句:
DROP TABLE P CASCADE CONSTRAINTS;
此命令也删除 FK 约束。
【讨论】:
删除表必然会删除与该表相关的所有约束。如果该表引用了某个表,则必须先删除这些约束以避免违反规则。
*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;
【讨论】:
奇怪...如果您正确禁用了约束,您应该能够删除父表而不会出现任何错误。
:|
【讨论】: