【问题标题】:Get Sequence Name (Oracle)?获取序列名称(Oracle)?
【发布时间】:2011-07-30 11:10:18
【问题描述】:

我无权查看数据库,但我可以创建数据库对象(通过 xml 文件)。 xml 文档说,如果我将一个名为“identity”的属性设置为 true,那么将创建一个序列。我是否可以编写返回序列名称的逻辑,以便在编写 INSERT 语句时使用 nextVal?

罗伯特

这是documentation,在“身份”一词上查找...

【问题讨论】:

  • 我要在这里补充一下,如果您要为这个黑板应用程序进行开发,就像您正在做的那样,您可能想要直接请求访问数据库。如果能看到blackboard的配置,可以下载sqldeveloper,尝试使用blackboard的连接参数,或许可以直接登录数据库,这样更容易调试问题。

标签: java database oracle sequence


【解决方案1】:

如果您可以运行 select 语句,那么您也许可以尝试 select * from user_sequences 来获取序列的名称。否则,能否请您发送您正在使用的该数据库创建实用程序的文档(如果它是公开的)。否则,这个问题就很难回答了。

编辑:

查看文档后,它说如果您创建带有主键的表,它将创建具有以下规则的序列,直接引用自文档:

主键必须包含一个 columnref 子元素,该子元素包含一个属性 name,该属性引用要包含在主键中的列名称。在 SQL Server 中,键被映射为具有自动递增值的标识字段。在 Oracle 上,会自动创建一个带有表名加上 _seq 后缀的序列。

因此,您的查询将是:

select * from all_sequences where sequence_name = upper(tablename || '_SEQ');

【讨论】:

  • +1 这也正是所写的内容。从 user_sequences 表中选择。
  • 请确保您有权访问 Oracle 数据字典
  • 我仍然觉得最重要的是我们知道他在这里使用的实用程序是什么,它是否以某种形式或形式公开可用,或者至少文档是否可用。
  • 默认情况下,oracle 用户被授予访问 USER_* 视图的权限。
  • sqldeveloper 是免费的,它会冻结很多,但如果您无法获得更好的东西的许可证,它就有些必要了。链接在这里:oracle.com/technetwork/developer-tools/sql-developer/downloads/…
猜你喜欢
  • 1970-01-01
  • 2019-08-27
  • 2019-04-12
  • 1970-01-01
  • 2016-08-24
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
相关资源
最近更新 更多