zoukankan      html  css  js  c++  java
  • oracle 序列sequence

    查询所有的序列:

    select 'create sequence '||sequence_name||
           ' minvalue '||min_value||
           ' maxvalue '||max_value||
           ' start with '||last_number||
           ' increment by '||increment_by||
            (case when cycle_flag='N' then '' else ' cycle ' end) ||
            (case when order_flag='N' then '' else ' order ' end) ||
            (case when cache_size=0 then ' nocache' else ' cache '||cache_size end) ||';'
    from USER_sequences;

    查出来的语句可以直接执行,当然要先删除原来的序列。还原oracle备份库的时候,备份库的数据可能比目标库的数据有所更新,序列记录最大值也已经变更,而目标库的序列记录最大值如果还是原来的值,不删除序列重建的话,那么就有可能插入重复的唯一值,从而报错。

    为甚么要使用序列sequence?

    如果你想像sql那样加个自增流水号,sql直接选择自增的int就可以了,可是oracle却没有这样的功能。

    要做到像sql的自增流水号,需要两个步骤:

    1.为每个表增加独立的序列

    2.增加触发器

    序列添加:

    create sequence S_DEMO_TABLE
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 1
    increment by 1
    cache 10;  

    添加触发器:

    CREATE OR REPLACE TRIGGER pw_taskitemInsert
        BEFORE INSERT ON pw_taskitem
      FOR EACH ROW
      BEGIN
        SELECT S_DEMO_TABLE.nextval INTO :new.PWTASKITEMID  FROM dual;
      END;
  • 相关阅读:
    log4net详细配置说明
    step by step 之餐饮管理系统三
    CF div2 331 C
    CF div2 331 B
    CF div2 331 A
    poj 2065 还是gauss消元
    poj 3478 poj 3090(欧拉函数的应用)
    poj 1284 求原根的个数(欧拉函数的应用)
    poj 2991 线段树
    poj 1753 poj3185
  • 原文地址:https://www.cnblogs.com/vinsonLu/p/6593416.html
Copyright © 2011-2022 走看看