Oracle Sequence要更改currval,为什么不删除它并重新创建呢?

时间:2018-11-27 03:04:22

标签: oracle ddl

我想增加一组序列的CURRVAL。

一个选择是删除Sequence并使用等于我想要增加的值的起始值重新创建它,但是我遇到了许多建议(herehere和{ {3}}),而不是删除它:

  • 限制访问权限
  • 将“ increment by”更改为您要使用的任何值,以将CURRVAL增加
  • 拉值
  • 将“增量”更改回1
  • 无限制访问

这一切都很好,但是我想知道删除Sequence有什么不好吗?

我知道触发器将失效,但是下次使用触发器时将重新编译-这真的有什么大不了的吗?

有什么我忽略的东西吗?

1 个答案:

答案 0 :(得分:1)

当序列或触发代码与其他pl / sql程序包之间存在许多复杂的依赖关系时,这变得很重要。

作为一般做法,您希望将可能导致无效的pl / sql代码(存储过程,程序包和触发器代码)的情况减至最少。下次调用该代码时,自动编译将按需运行。但是,如果您具有大量事务处理系统或具有复杂依赖关系的大规模应用程序,则由于重新编译而导致的那些延迟(或后续异常)可能是不可接受的。

如果您的特定设置使得触发器代码非常简单,没有依赖性,并且您可以在不触发触发器的时间内执行DDL,则可以删除并重新创建同义词,然后重新编译触发代码。