oracle 如何通过元数据查看表的主键是否为自增

oracle 如何通过元数据查看表的主键是否为自增
oracle 如何通过元数据查看表的主键是否为自增

我们只需要在where筛选器中筛选出主键和自增列


SELECT
    cols.table_name,
    cols.column_name,
    cons.constraint_type
FROM
    all_constraints cons
    JOIN all_cons_columns cols ON cons.constraint_name = cols.constraint_name
WHERE
    cons.constraint_type IN ('P', 'C') 
    AND cols.table_name = 'TEST_TABLE';
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/243332
  • 这篇博客你也可以参考下:Oracle数据库查询指定日期范围内的数据
  • 除此之外, 这篇博客: Oracle数据库字符串类型主键自增实现中的 Oracle数据库字符串类型主键自增实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    菜单表:

    -- Create table
    create table MENU
    (
      menu_id   VARCHAR2(10) not null,
      menu_name VARCHAR2(50) not null
    );
    -- Create/Recreate primary, unique and foreign key constraints 
    alter table MENU
      add constraint PK_MENU_ID primary key (MENU_ID);
    

    如上表,菜单表menu,主键是menu_Id,且其类型为varchar2,要实现menu_id从00001自增,至99999,使用sequence+trigger来实现。

    序列sequence:

    create sequence seq_menu_id
    increment by 1 --每次加几个
    start with 1
    maxvalue 99999
    nocycle --直累加,不循环
    cache 10;
    

    触发器trigger

    create trigger tri_menu_id before insert
    on menu for each row when (new.menu_id is null)
    declare
       next_id varchar2(5);
    begin
       select substr('0000'||seq_menu_id.nextval, -5) into next_id from dual;
       :new.menu_id:=next_id;
    end;
    

    插入测试
    插入测试


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^