创建一个序列如序列名:seq_id;
在插入你表中的某个字段里,如table b(id number(2),name)中的id字段.
insert into b values(seq_id.nextval,'jack');

解决方案 »

  1.   

    -------------------------------------------------------------------------
    ORACLE没有象SQL SERVER中一样的自增加字段,要实现只能通过SEQUENCE来实现1.创建序列:
    create sequence your_seq 
    nocycle
    maxvalue 9999999999
    start with 1;2.使用触发器实现自增:
    create or replace trigger your_seq_tri
    before insert on your_table1 for each row
    declare
      next_id number;
    begin
      select your_seq.nextval into next_id from dual;
      :new.id := next_id;
    end;在oracle中,为了方便我常常用触发器及序列结合起来实现,下面就是一个示例。 
    先建表、再建序列、然后是触发器,最后测试============================================= 
    --为主键指定序列编号 
    --2003-10-8 15:53 
    ============================================= conn scott/tiger@powermis drop table foo; create table foo( 
      id number primary key, 
      data varchar2(100)); create sequence foo_seq; create or replace trigger bifer_foo_id_pk 
      before insert 
        on foo 
        for each row 
    begin 
      select foo_seq.nextval into :new.id from dual; 
    end; 
    / insert into foo(data) 
      values('Chirstopher'); insert into foo(id,data) 
      values(5,'Sean'); select * from foo;Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列(sequence)相比具有诸多优势。
    一个序列生成器只是简单地创建从给定的起点开始的一系列整数值,而且它被用在选择陈述式的时候自动地递
    增该系列。 
    序列生成器所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关键
    字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。SYS_GUID会保证它创建的标识符在
    每个数据库里都是唯一的。此外,序列必须是DML陈述式的一部分,因此它需要一个到数据库的往返过程(否则它就不能保证其值是唯一
    的)。SYS_GUID源自不需要对数据库进行访问的时间戳和机器标识符,这就节省了查询的消耗。create table use_seq_table(id integer);
    create sequence use_seq_sequence;
    insert into use_seq_table values (use_seq_sequence_value.nextval);REM - for some reason, the documentation uses raw(32)
    create table use_guid_table(id raw(16));
    insert into use_guid_table(sys_guid()); 很多应用程序都依靠序列生成器来创建数据行的主关键字,这些数据行没有一个明显的主值,这也就是说,在
    这样的数据集里一条记录的创建就会让数据列发生改变。因此,管理员可能会对在表格中将SYS_GUID用作主关键
    字而不使用序列数感兴趣。这在对象在不同机器的不同数据库里生成以及需要在后来合并到一起的情况下很有用。但是,SYS_GUID所生成的值是一个16位的原始值。序列所生成的整数不会使用16位(的值),除非它达到了10的
    30次方(每个字节有两位),而且数字是相当独特的:SQL> select dump(123456789012345678901234567890) from dual;DUMP(123456789012345678901234567890)
    --------------------------------------------------------------
    Typ=2 Len=16: 207,13,35,57,79,91,13,35,57,79,91,13,35,57,79,91 较短的值就意味着用于表格和索引的存储空间更少,以及查询访问的时间更短。使用SYS_GUID或者序列会在数据库使用周期里的某些地方造成性能上的消耗;问题就是在哪里。对于SYS_GUID
    而言,性能上的影响在查询时间和创建时间上(在表格里要创建更多的块和索引以容纳数据)。对序列而言,
    性能上的影响在查询期间,在这个时候,SGA序列的缓冲区被用光。在缺省情况下,一个序列一次会缓冲20个值。
    如果数据库没有使用这些值就关闭了,它们就会被丢失。SYS_GUID生成的值的另一个显著的不足之处是,管理这些值会变得困难得多。你必须(手动)输入它们或者通过
    脚本来填充它们,或者将它们作为Web参数来传递。出于这些原因,将SYS_GUID作为一个主关键字不是一个很好主意,除非是在一个并行的环境里或者希望避免使用
    管理序列生成器的情况下。
      

  2.   

    DROP SEQUENCE TEST.SEQ_STUDENT_ID;CREATE SEQUENCE SEQ_STUDENT_ID
      START WITH 5
      MAXVALUE 1E27
      MINVALUE 0
      NOCYCLE
      NOCACHE
      NOORDER;CREATE TABLE STUDENT_INFO
    (
      ID        NUMBER                              NOT NULL,
      NAME      VARCHAR2(50 BYTE),
      SEX       VARCHAR2(10 BYTE),
      AGE       NUMBER,
      BIRTHDAY  DATE,
      PHONE     VARCHAR2(20 BYTE)
    )
    CREATE OR REPLACE TRIGGER TG_STUDENT_INFO
    BEFORE INSERT ON STUDENT_INFO
    REFERENCING OLD AS old NEW AS new
    FOR EACH ROW
    BEGIN
      IF :new.ID IS NULL THEN
        SELECT SEQ_STUDENT_ID.NEXTVAL
        INTO   :new.ID
        FROM   dual;
      END IF;
    END;
      

  3.   

    select seq.nextval from seq;
    取得序列的下一个值;
    select seq.currentval from seq;
    取得序列的当前值。insert into tabl(userid number,time varchar2(10)) values(seq.nextval,sysdate);
    commit;将序列下一个值插入到表中。
      

  4.   

    不好意思,是select seq.nextval from dual;select seq.currnetval from dual;
      

  5.   

    1.
    //创建名为 xdhtnews_id 的序列 默认情况下,从1开始每次增长1
    create sequence xdhtnews_id;//从176001开始每次增长1
    create sequence xdhtnews_id_s increment by 1 start with 176001;
    2.
    //创建名为 xdhttiger 的触发器,
    //在插入表 xdhtnews 之前
    //对于每一行
    //当 (NEW.***) 为空
    //开始
    //查找到下一个值 into (NEW.***) DUAL是一张系统表
    //结束
    CREATE OR REPLACE TRIGGER xdhttiger
    BEFORE INSERT ON xdhtnews
    FOR EACH ROW
    WHEN (NEW.SID IS NULL)
    BEGIN
    SELECT xdhtnews_id.NEXTVAL INTO :NEW.SID FROM DUAL;
    END;3.插入值的时候,id 就不用出现了
    insert into xdhtnews(name,lasttime....) value( nameValue,lasttimeValue.....)
      

  6.   

    用insert into 插入数据,只是一行一行的.我想把excel表中的多行一次插入该怎么插入数据呢,
    同时序列段也自动有数据呢
      

  7.   

    用触发器orinsert into ...
    select seq_id.nextval,... from excel
      

  8.   

    不可以直接写excel吧.这里这样有错
      

  9.   

    改成dual这里那有数据呢,也不可以和excel表的数据联系起来啊
      

  10.   

    想多条插入,序列也自动添加,有什么样的方法呢.insert into ...
    select seq_id.nextval,... from table一般是可以这样写的不过excel中取值估计就不这么简单了
      

  11.   

    这两者没有本质上的联系,但在表上用序列可以实现自增列, seqname.nextvalue,