当前位置:   article > 正文

Flyway——修改表名称与序列名称_oracle怎么更改序列名

oracle怎么更改序列名

前言

开发中一次偶然的机会,Oracle 12c 更换为 11g ,需要对表名称的长度和序列长度做限制要求。

11g相对12c而言,表名称序列名称长度不能超过30个字符

在开发中做了更改,在测试环境做了测试验证,脚本ok。

脚本修改表名

修改表名称,需要使用到Oracle的下面的命令。

alter table xxx表 rename to xxxx新的名称

写pl/sql脚本的作用是:

并不是每次都需要做更改,只需要符合条件时更改即可。

脚本如下所示:

declare
    cnt integer ;
begin
    SELECT COUNT(0)
        INTO cnt
    FROM USER_ALL_TABLES
    where table_name = upper('xxxx旧表名');
if cnt = 1 then
    EXECUTE IMMEDIATE 'alter table xxxx旧表名 RENAME TO xxxx新表名';
end if;
end;
/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

修改序列

在oracle中,修改序列虽然也有语法,但是使用plsql进行脚本更新,总会报错。
在这里插入图片描述
后来经过验证,只能先删除再新增。但这么做必须保证一个要素点:

序列的最新值问题。
必须保证不影响业务流程的情况下,尽可能地让序列新增值能够顺延。

脚本如下所示:

-- 序列名称
declare
    cnt integer ;
    newseq integer ;
    v_startnum integer;
begin
    select count(0)
        into cnt
    from user_sequences
    where sequence_name = upper('xxx旧的序列名称');

    select count(0)
        into newseq
    from user_sequences
    where sequence_name = upper('xxxx新的序列名称');
if cnt = 1 then
    if newseq = 0 then
        -- 查询当前数据表的最大记录数  +1  作为新序列的开始数
        select max(ID)+1
               into v_startnum
        from SYS_INDICATOR_CONFIG;

        -- 先删除旧序列
        EXECUTE IMMEDIATE 'drop sequence xxx旧序列名称 ';

        -- 创建新序列
        execute immediate 'create sequence xxxx新序列名称 minvalue 1
            maxvalue 9999999999999999
            start with ' ||v_startnum||
            'increment by 1
            cache 20';
    END if;
END if;
end;
/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/595553
推荐阅读
相关标签
  

闽ICP备14008679号