如何确定列是否是oracle中的自动增量字段?

时间:2011-02-19 09:51:58

标签: sql oracle metadata primary-key sqlplus

如何确定某列是否是oracle中的自动增量字段?

2 个答案:

答案 0 :(得分:7)

你做不到。 Oracle没有自动增量字段。

Oracle支持序列,它们是用于生成数字的独立数据库对象。这些seuqences可以在insert语句或before insert触发器中使用,以生成新记录的主键值。

字段本身只是普通字段,序列和字段之间没有关系。

所以唯一的希望是解析一个触发器,看看你是否能找到使用序列填充它的证据。不过,这将是一项艰巨的工作,我怀疑你是否可以做到这一点足够可靠。毕竟,触发器可以触发一个返回值的函数,所以如果你想确定的话,你必须一直走。

答案 1 :(得分:1)

从Oracle 12.1开始,可以通过查看视图DBA_TAB_COLUMS(或USER_TAB_COLUMNS或ALL_TAB_COLUMNS)的“ DATA_DEFAULT”列来标识标识列(具有自行生成的序列)。 它们看起来像“ #OWNER”。“ ISEQ $$ _ nnnnn” .nextval