代码之家  ›  专栏  ›  技术社区  ›  MattWeiler

如何检测oracle数据库是否支持自动增量?

  •  0
  • MattWeiler  · 技术社区  · 6 年前

    我在做一个项目,根据不同环境中可用的数据库,我们可能使用Oracle11g或Oracle12c数据库——我知道这并不理想:(

    我的项目是一个spring boot应用程序,我使用liquibase来管理数据库对象。

    我的问题是,如果我在oracle 12c数据库上运行,我希望在oracle 11g上使用自动递增的i d,我将不得不依赖一个触发器和一个序列。

    有没有办法检测Oracle的当前版本是否支持自动递增,或者我必须查看版本号?

    我目前使用的SQL(可以工作)只查看版本号:

    SELECT
        CASE
            WHEN (TO_NUMBER(SUBSTR(version, 1, INSTR(version, '.') - 1)) >= 12) THEN
                1
            ELSE
                0
        END AS SUPPORTS_AUTO_INC
    FROM
        V$INSTANCE;
    

    我宁愿使用一些sql来检查这个特性是否可用( 在css中使用特性时的相同原则 )中。

    谁知道呢,也许甲骨文将来会删除这个功能。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Matthew McPeak    6 年前

    我会检查版本。甲骨文确实有 V$SQL_FEATURE 桌子和 DBA_FEATURE_USAGE_STATISTICS 表,但这两个表似乎都没有任何关于标识列的条目。

    这是一个非常无礼的方式 能够 做吧…

    select decode(count(*),0,'N','Y') supports_identity_flag
    from dba_tab_columns
    where table_name = 'DBA_TAB_COLUMNS'
    and column_name = 'IDENTITY_COLUMN';