1, 添加id列

-- ###############################################
-- add ID column for XXXXXXTABLE
-- ###############################################
declare
v_cnt binary_integer := 0;
begin select count(1) into v_cnt
from user_tab_columns e
where e.table_name = 'XXXXXXTABLE'
and e.column_name = 'ID'; if( v_cnt = 0 ) then
execute immediate 'alter table XXXXXXTABLE add ( ID int )';
end if;
end;
/

2,给ID列赋值

-- ###############################################
-- set ID value with FXNDF_FIXING_POST_SEQ for XXXXXXTABLE
-- ###############################################
merge into XXXXXXTABLE u
using (
select rowid rid, rownum rnum from XXXXXXTABLE
) s
on (u.rowid = s.rid)
when matched then update set u.id = s.rnum ;
commit;

3, 添加序列

-- ###############################################
-- add FXNDF_FIXING_POST_SEQ
-- ###############################################
declare
v_cnt binary_integer := 0;
v_sql varchar2(500) := '';
v_current_max int :=0; begin select count(1) into v_cnt
from user_sequences e
where e.sequence_name = 'XXXXXXTABLE_SEQ'; if( v_cnt = 0 ) then select max(ID) into v_current_max from XXXXXXTABLE; select nvl(v_current_max,0) + 1 into v_current_max from dual; v_sql := 'CREATE SEQUENCE XXXXXXTABLE_SEQ MINVALUE ' || v_current_max || ' MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH ' || v_current_max;
execute immediate v_sql; end if;
end;
/

4, 添加主键

-- ###############################################
-- add unit key on id for XXXXXXTABLE
-- ###############################################
declare
v_cnt binary_integer :=0;
begin select count(1) into v_cnt
from user_constraints e
where e.table_name = 'XXXXXXTABLE'
and e.constraint_name = 'PK_XXXXXXTABLE'; if( v_cnt = 0 ) then
execute immediate 'alter table XXXXXXTABLE add constraint PK_XXXXXXTABLE primary key (ID)';
end if;
end;
/

5, 添加before 触发器

-- ###############################################
-- add before insert trigger for XXXXXXTABLE
-- ###############################################
CREATE OR REPLACE TRIGGER TRG_XXXXXXTABLE_INST
before insert ON XXXXXXTABLE for each row
begin select XXXXXXTABLE_SEQ.nextval into:new.ID from dual; end TRG_XXXXXXTABLE_INST;
/

用触发器来实现Oracle的自增长列的更多相关文章

  1. Oracle创建自动增长列

    前言: Oracle中不像SQL Server在创建表的时候使用identity(1001,1)来创建自动增长列,而是需要结合序列(Sequences)和触发器(Triggers)来实现 创建测试表 ...

  2. Oracle数据库自动增长列的实现过程

    1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 in ...

  3. oracle创建自增长列

    --创建一个新表 /*create table students(stu_id number,stu_name varchar2(20),stu_email varchar2(40),primary ...

  4. Oracle增加自增长列

    -- 移除索引drop index TB_1;drop index TB_2 ;alter table TB drop constraint PK_TB; --允许列为空 alter table TB ...

  5. Oracle 给已创建的表增加自增长列

    对于已经创建的表,在特殊需求下,需要增加一个自增长列步骤: --1. 增加 自增长列 ); --2. 程序方式更新设置 IdNum 列 值 --3.查询最大 ) From Limsbusinessen ...

  6. oracle的自增长

    mysql的自增长非常容易,一个 AUTO_INCREMENT 就搞定,可是oracle就不行了 下面是oracle的自增长 #创建一个表CREATE TABLE T_TEST_DEPARTMENTS ...

  7. Oracle创建自增长主键

    Oracle主键常用的分为UUID和自增长int两种,下面简单说下各自的优缺点: UUID的优点 1.生成方便,不管是通过sys_guid() 还是java的uuid都能很方便的创建UUID. 2.适 ...

  8. Hibernate在oracle中ID增长的方式

    引用链接:http://blog.csdn.net/w183705952/article/details/7367272 Hibernate在oracle中ID增长的方式 第一种:设置ID的增长策略是 ...

  9. Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:

    Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...

随机推荐

  1. php策略模式的研究

    <?php abstract class Moshi{     private $num;     public $price;     const Ted=1;     const Sed=2 ...

  2. HTML标记语法之图片Img元素

    语法:<img src=”xxx.jpg”alt=”xxx”title=”xxx”> 属性可取值如下: 属性名称 属性值 说明 src URL 图片路径 alt 文本 图片无法显示时的文本 ...

  3. 解决SQL Server的cannot resolve the collation conflict问题

    当没有牵涉到两个不同的数据库时,出现以上错误.   Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" ...

  4. supersr--图形上下文的注意点

    - (void)test { // 不要自己调用drawRect:方法的原因: // 当系统调用drawRect:方法之前, 会创建一个与当前UIView的layer相关的图形上下文, 这样就可以保证 ...

  5. A Horrible Poem(bzoj 2795)

    Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. Input 第一行一个正整 ...

  6. SQL Server多表多列更新

    student表: lag表: 要求将student表stu_id列为1的stu_nick列和stu_phont列的数据更新为lag表的lag_nick列和lag_phone列. SQL语句: upd ...

  7. 在HTML中禁止文字的复制

    很简单,只需在<body>中添加如下代码: <body  oncontextmenu='return false' ondragstart='return false' onsele ...

  8. sehll_if

    -s file 文件大小非0时为真 [ -f "somefile" ] :判断是否是一个文件[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可 ...

  9. CSDN-markdown编辑器

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接 ...

  10. linux eclipse3.6.1 maven安装

    linux maven安装及 eclipse maven插件安装,有需要的朋友可以参考下. 1. maven的安装(apache-maven-3.0.5为例):  a.官网地址:http://mave ...