我不得不暂时使用启用级联来修复我的数据库中的一些问题。 我使用了这个改动:
ALTER TABLE table
DISABLE PRIMARY KEY CASCADE;
现在我想撤消它并再次启用所有约束。我是否必须逐一启用它们?
答案 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)
然后运行它......