项目里面有几百张表,没有创建sequence,
还好每个表的主键命名都是ID,
create or replace PROCEDURE "ADD_SEQ_TRIGGER" AS ctr number := 0; ctr2 number := 0; addcount number := 0; totcount number := 0; mcount number := 0; var_name varchar(50) := 'ID'; var_seq varchar(50); Var_Trg Varchar(50); var_nex varchar(50); begin FOR t IN (select table_name from user_tables where table_name like 'TD_PRO%') LOOP select count(*) into ctr from user_tab_columns where table_name like t.table_name and column_name like var_name; IF (ctr > 0) THEN var_seq :=t.table_name||'_SEQ'; var_trg :=t.table_name||'_TRG'; var_nex :=t.table_name||'_SEQ'||'.nextval'; select count(*) into ctr2 from USER_SEQUENCES where sequence_name = var_seq; if(ctr2> 0) THEN dbms_output.put_line('sequence exist for table: '||t.table_name||'!'); ELSE EXECUTE IMMEDIATE 'CREATE SEQUENCE '||var_seq||' START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; addcount := addcount + 1; END IF; dbms_output.put_line('create or replace trigger for table: '||t.table_name||'!'); EXECUTE IMMEDIATE 'create or replace trigger '||var_trg||' BEFORE INSERT ON '||t.table_name||' for each row begin '|| 'if inserting then if :NEW."ID" is null then '|| 'select '||var_nex||' into :NEW."ID" from dual; end if;end if;end;'; ELSE dbms_output.put_line('ID does NOT exist for table: '||t.table_name||'!'); END IF; totcount := totcount + 1; END LOOP; DBMS_OUTPUT.PUT_LINE('total tables count: '||totcount); DBMS_OUTPUT.PUT_LINE('total add count: '||addcount); END ADD_SEQ_TRIGGER;
相关推荐
在Oracle数据库移植过程中,sequence可能失效,本资源可使失效的sequence重新恢复作用
Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...
Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 很有用哦
oracle中sequence介绍及应用
oracle GoldenGate 同步oracle sequence的步骤
只需要在excel里面写好表名列名,即可通过本EXCEL自动生成oracle table index sequence syn等表信息,注:只支持office 32位,系统多少位不影响。。
在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢? 事务回滚引起的跳号 不管序列有...
教你如何使用oracle中的sequence,实现主键自动增长
可以根据oracle数据库中存在的sequence,生成建立语句
Sql Server 数据库,插入操作时可以设置,自动编号。但是ORACLE 数据库,具有里一个东西SEQUENCE,在这儿介绍
1、在Oracle sequence首先创建sequence create sequence seq_idminvalue 1start with 1increment by 1cache 20; 2、在你的hbm.xml中的配置 seq_id 这样再插入数据的时候,Hibernate会自动生成如下语句: ...
sequence-generator简介类似于oracle的sequence,但更加强大支持分布式环境下sequence的生成使用乐观锁和AtomicLong确保sequence的唯一性使用及其简单db scriptCREATE TABLE sequence_database.sequence ( name ...
oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...
在开发过程中,可能会用到oracle sequence语句,本文以oracle sequence语句如何重置进行介绍,需要的朋友可以参考下Oracle重置sequence语句1 Sql代码 代码如下: DECLARE n NUMBER(10 ); tsql VARCHAR2(100 ); p_...
基于循环神经网络和注意力机制的Sequence-to-Sequence模型神经网络方法在信息抽取和自动摘要生成方面发挥了重要作用。然而,该方法不能充分利用文本的语言特征信息,且生成结果中存在未登录词问题,从而影响文本摘要...
oracle 主键自增 给你个例子吧:看看肯定明白了!!! 首先,你要有一张表! CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(10), ADDRESS VARCHAR(50) ); ...