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

问题描述 投票:0回答:1

我正在开发一个项目,在这个项目中,我们可能会使用Oracle 11g或Oracle 12c数据库,具体取决于各种环境中的可用内容 - 我不知道:(不理想):(

我的项目是一个Spring Boot应用程序,我正在使用Liquibase来管理数据库对象。

我的问题是,如果我在Oracle 12c数据库上运行,我想在Oracle 11g上利用自动递增ID,我将不得不依赖于触发器和序列。

有没有办法检测当前版本的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中使用功能时使用相同的主体)。

谁知道,也许Oracle将来会删除此功能。

oracle auto-increment feature-detection
1个回答
1
投票

我会查看版本。 Oracle确实有一个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';
© www.soinside.com 2019 - 2024. All rights reserved.