撤消DISABLE PK CASCADE

时间:2015-09-18 11:50:47

标签: oracle oracle11g

我不得不暂时使用启用级联来修复我的数据库中的一些问题。 我使用了这个改动:

ALTER TABLE table
DISABLE PRIMARY KEY CASCADE;

现在我想撤消它并再次启用所有约束。我是否必须逐一启用它们?

2 个答案:

答案 0 :(得分:2)

是的,您必须逐个重新启用相关约束。重新启用约束没有魔术cascade选项。

以下是Darl Kuhn的“Pro Oracle Database 12c Administration”一书中的引用。该信息也适用于Oracle 11g:

  

请注意,没有ENABLE ... CASCADE声明。要重新启用约束,您必须查询数据字典以确定已禁用哪些约束,然后单独重新启用它们。

与该引用一致,przemo_pl为您提供了一个很好的答案,可以最大限度地减少处理您的用例的痛苦。

答案 1 :(得分:1)

我不知道以级联方式自动启用约束的任何方式,甚至尝试谷歌但没有任何价值的结果。 所以我会这样做: 转到并询问dba_constraints以获取引用此主键的所有约束:

crse_name

只需仔细检查那些是你应该启用的那些,并创建一个脚本来启用它们:

result := MIS_School{}

err := database.C("schools").Find(bson.M{"school_name": school}).Select(
bson.M{"dept_list": bson.M{"$elemMatch": bson.M{"dept_name": dept}}}).Select(
bson.M{"crse_list": bson.M{"$elemMatch": bson.M{"crse_name": crse}}}).One(&result)

然后运行它......