大家好,我想问一下oracle中自动增长的列怎样设置,我查了相关资料但是没有实现,呵呵,我比较笨一点,请大家写得细一点哈
还有一个问题:怎样查询某用户下的sequence有哪些???这个,创建了不删掉有什么影响吗???当我删除一个用户的时候,是不是只要是基于本用户的所有数据都将丢失呢?????请大家多多指教哈!!^o^

解决方案 »

  1.   

    第一问:
    oracle没有自增长类型。
    一般可以通过触发器和序列实现。第二问:
    select object_name from user_objects
    where object_type = 'SEQUENCE'
      

  2.   

    --建表
    SQL> create table tab1(id number,name varchar2(20));
     
    Table created
     
    --创建序列
    SQL> create sequence seq_id start with 1 increment by 1;
     
    Sequence created
     
    --创建触发器
    SQL> create or replace trigger tr_tab1
      2  before insert on tab1
      3  for each row
      4  begin
      5     select seq_id.nextval into :new.id from dual;
      6  end;
      7  /
     
    Trigger created
      
    SQL> insert into tab1(name) values('aa');
     
    1 row inserted
     
    SQL> insert into tab1(name) values('bb');
     
    1 row inserted
     
    SQL> select * from tab1;
     
            ID NAME
    ---------- --------------------
             1 aa
             2 bb
     
    SQL> 
      

  3.   

    --查看当前用户的序列
    select * from user_sequences;
    --查看有权访问的序列
    select * from all_sequences;
    ----查看数据库所有序列
    select * from dba_sequences;删除用户将删除该用户拥有的所有对象。
      

  4.   

    oracle没有自增长类型,一般可以通过触发器和序列实现。select object_name from user_objects
    where object_type = 'SEQUENCE';--查询某用户下的sequence有哪些
      

  5.   


    oracle sequence


    insert语句中sequence的使用方法
      

  6.   

    SQL> create or replace trigger tr_tab1
      2  before insert on tab1
      3  for each row
      4  begin
      5     select seq_id.nextval into :new.id from dual;
      6  end;
      7  /
    请问你可不可以给我解释一下创建触发器的这些语句啊?具体每一句的作用是什么?
    谢谢哈。
      

  7.   

    create or replace trigger tr_tab1 --触发器名tr_tab1
    before insert --触发时机:在插入数据之前触发
    on tab1 --触发器基于表tab1
    for each row --行级触发器:针对每行记录都触发
    begin
       --取序列seq_id的nextval(下一个值),作为即将插入字段id的值
       select seq_id.nextval into :new.id from dual; 
    end;
      

  8.   


    --创建自增列
    --表
    create table ROI_DATAMODEL
    (
      ID          char(4) not null,
      NAME        VARCHAR2(100),
      CONTEXT     CLOB,
      PRIMARYKEYS VARCHAR2(200),
      PRIMARY KEY(ID)
    );
    --序列
    CREATE SEQUENCE seq_ROI_DATAMODEL START WITH 1 INCREMENT BY 1;
    --设置触发器
    CREATE OR REPLACE TRIGGER tri_ROI_DATAMODEL
    BEFORE INSERT
    ON ROI_DATAMODEL
    FOR EACH ROW
    BEGIN
      select seq_ROI_DATAMODEL.nextval into :new.id from dual;
    END;
    --测试
    INSERT INTO ROI_DATAMODEL(NAME,CONTEXT) VALUES('liu','son');
    INSERT INTO ROI_DATAMODEL(NAME,CONTEXT) VALUES('liu','wife');SELECT * FROM ROI_DATAMODEL;