Enable constraint on Oracle flashback table
我在 Toad 中运行了一个数据复制功能,该功能禁用了所有约束,然后失败了。
这给我留下了一堆禁用的约束。他们中的大多数我已经能够成功启用,但是闪回的那些让我的存储过程适合。
问题:
1) 是否有必要重新启用闪回表上的约束?我的假设是,如果未启用它们并使用闪回,则在恢复表时它们将被禁用,所以是的,它们应该重新启用。
2) 我得到的错误是 ORA-01735: Invalid alter table option.
1 2 3
| EXECUTE IMMEDIATE
'ALTER TABLE'||' '||l_table_name ||' '||'ENABLE CONSTRAINT'||'
'||l_Constraint_name ; |
我的假设是表名中的 ==$0 引起了问题,我需要用双引号将其括起来。但是,我这样做的尝试:
1 2 3
| EXECUTE IMMEDIATE
'ALTER TABLE'||'""'||l_table_name ||'"" '||'ENABLE CONSTRAINT'||'
'||l_Constraint_name ; |
也失败了。什么是正确的语法?还是我在错误的实际是什么错误的树上吠叫?
怎么样:
1 2 3
| EXECUTE IMMEDIATE
'ALTER TABLE'||'""'||l_table_name ||'"" '||'ENABLE CONSTRAINT'||'
"'||l_Constraint_name ||'"'; |
- 正确答案原来是:EXECUTE IMMEDIATE \\'ALTER TABLE\\'||\\' "\\'||l_table_name||\\'" \\'||\\'ENABLE CONSTRAINT\\'||\\' "\\' ||l_Constraint_name||\\'"\\';
-
哈 - 我没有注意到你在表名周围有双双引号......对不起:)