首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache DdlUtils ::如何获得自动递增键的序列名称?

Apache DdlUtils ::如何获得自动递增键的序列名称?
EN

Stack Overflow用户
提问于 2012-08-05 00:09:50
回答 1查看 299关注 0票数 0

我使用Apache DdlUtils查询表和列元数据的PostgreSQL数据库(最终目标是自动生成javax.Persistence注释的实体bean)。但是,在我看来,DdlUtils库并没有提供获取自动增量列中使用的序列名称的方法。类提供了一个查询自动增量状态的方法,但我找不到获得与其关联的序列名称的方法。这是PostgreSQL中DDL的一部分,例如:

代码语言:javascript
复制
orders=# \dS customer
                         Table "public.customer"
    Column     |       Type        |                    Modifiers
---------------+-------------------+--------------------------------------------------
 id            | integer           | not null default nextval('cst_id_seq'::regclass)
 name          | character varying | not null
 (...)

我是否应该直接查询一些元数据/目录表,而不是获取这些信息呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-06 08:31:50

回答我自己的问题。是的,就像millimoose建议的那样,它不能用DdlUtils来完成,您必须查询information_schema.columns表:

代码语言:javascript
复制
public String getPostgreSQLSequenceForColumn(String database, String table, String column) {
    try {
        Statement stmt = connection.createStatement();
        String sql="select column_default from information_schema.columns where "+
                   "table_catalog='"+database+"' and "                           +
                   "table_schema='public' and "                                  +
                   "table_name='"+table+"' and "                                 +
                   "column_name='"+column+"'";
        ResultSet rs = stmt.executeQuery(sql);
        rs.next();
        String sequenceName = rs.getString(1);
        panicIf(rs.next());
        return sequenceName;
    } catch (Exception e) {
        throw new ExceptionAdapter(e);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11812945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档