Oracle - 列是否附有序列?

Oracle - does a column have a sequence attached to it?

这是一个一般性的问题,但是是否有一种简单的方法可以确定在 Oracle 数据库中某个字段是否附加了序列号?这看起来应该很明显,但我想念它。

谢谢。

一般来说,不会。序列是单独的 first-class 对象。通常,您会为每个 table 创建一个序列,并始终如一地使用该序列来填充密钥(通过触发器或通过您必须执行插入的任何程序 API)。但是没有什么能阻止您使用相同的序列来填充多个 table 或编写不使用序列的代码。

如果您使用的是最新版本的 Oracle,并且您只查看明确创建为标识列的列,而不是创建单独序列并使用触发器/列默认值填充的老式方法键,您可以使用 all_tab_columns 中的 identity_column 列(或 user_tab_columns/ dba_tab_columns)来查看该列是否被声明为一个标识。

无法将序列附加到 oracle 中的字段,您可以做的是在您的应用程序中使用您认为合适的序列。

一般来说,您需要在 table 上寻找触发器,对于可能用于向此 table 插入数据的过程,有些人使用它们来调节序列使用和排序将它附加到一个字段,但它不是真正的附件,但它们只是使用序列,它可以用于许多其他方式。