oracle中如何判断某列是否为自增字段?

发布于 2024-10-18 07:22:33 字数 28 浏览 5 评论 0原文

oracle中如何判断某列是否为自增字段?

How to find out if a column is an auto increment field in oracle?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剪不断理还乱 2024-10-25 07:22:33

你不能。 Oracle 没有自动递增字段。

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

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

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

You can't. Oracle doesn't have auto-increment fields.

Oracle supports sequences, which are separate database objects for generating numbers. These seuqences can be used in the insert statement or in a before insert trigger to generate a primary key value for the new record.

The fields themselves are just normal field and there is no relation between the sequence and the field.

So the only hope is to parse a trigger and see if you can find evidence of it being filled there using a sequence. That would be a tough job, though, and I doubt if you can make this reliable enough. After all, the trigger could fire a function which returns the value, so you have to go all the way if you want to be sure.

随梦而飞# 2024-10-25 07:22:33

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

As of Oracle 12.1 identity columns (with self generated sequences) can be identified by looking at the "DATA_DEFAULT" column of view DBA_TAB_COLUMS (or USER_TAB_COLUMNS or ALL_TAB_COLUMNS).
They will look like "#OWNER"."ISEQ$$_nnnnn".nextval

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文