首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

sequence避免主键独一约束

2012-07-24 
sequence避免主键唯一约束---为某个新加的表创建序列create sequence S_ESP_Nminvalue 1maxvalue 99999999

sequence避免主键唯一约束
---为某个新加的表创建序列
create sequence S_ESP_N
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
nocache;

---使用序列
SELECT empseq.currval FROM DUAL;
SELECT empseq.Nextval FROM DUAL;

---为用户授予创建序列的权限
GRANT CREATE ANY sequence TO OAIS

---使用存储过程为已存在数据ESP_N的表创建序列
create or replace procedure createS(a out number) is
       cursor structureIdsCur is SELECT distinct(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE

(table_name,'_CHILDREN',''),'ESP_',''),'_PARENT',''),'_RULE_CONTENT',''),'_RULE_PACKAGE',''),'_TAMP','')) as id FROM USER_TABLES WHERE TABLE_NAME LIKE 'ESP_%' ;
       oneId structureIdsCur%rowtype ;
       tablename varchar2(100);
       str varchar2(100);
       strsql varchar2(500);
       stat number ;
       cou number ;
begin
       for oneId in structureIdsCur loop
           tablename:= 'esp_' || oneId.id ;
           str:= 'select count(*) as int from tab where tname=upper('''|| tablename||''')' ;
           dbms_output.put_line(str);
           execute immediate str into cou ;
           if cou>0 then
                   begin
                   strsql:= 'select nvl(max(id),1) from ' || tablename ;
                   --dbms_output.put_line(strsql);
                   execute immediate strsql into stat ;
                   strsql:='create sequence seq_' || tablename || ' minvalue 1 maxvalue 999999999999999999999999999 start with '|| stat ||' increment by 1 nocache';
                   --dbms_output.put_line(strsql);
                   execute immediate strsql;       
                   end;
            end if ;      
       end loop ;

end createS;

热点排行