我想让表里的某一个字段自动增长,请问该如何设置?我用的数据库辅助工具是toad
请写出具体过程谢谢

解决方案 »

  1.   

    你的意思是否要实现象SQL SERVER中自增ID的效果?
      

  2.   

    请参照:
    1、先建一个序列
    CREATE SEQUENCE BSWXWMS.BSWXWMSEQ
    START WITH 1
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 1000000
    NOCACHE 
    NOCYCLE 
    NOORDER 2、建一个测试用表
    CREATE TABLE TEST
    (
      ID    INTEGER,
      NAME  VARCHAR2(50 BYTE)
    )3、查找表中的数据,现在应该是空的
    Select * From Test;4、插入数据。
    insert into test(ID,Name) values (BSWXWMSEQ.nextval,'liulif');5、查找数据,现在的ID应该是1
    Select * From Test;6、再次插入数据
    insert into test(ID,Name) values (BSWXWMSEQ.nextval,'liulif');7、查找数据,现在的ID应该是2
    Select * From Test;........
    这个ID应该就是你要实现的效果吧?
      

  3.   

    注意这个ID是Integer的,不能是字符型的。
      

  4.   

    谢谢你'liulif'  现在的情况是,对于数据库中的一个已经存在的表(其中含有int的字段id)我想把此表的id设置为以上所说的自动增长序列,怎么对该表操作?小弟是菜鸟,不好意思,不知从何动手,劳烦这位大哥再说说
      

  5.   

    先建立序列,再建立触发器,下面的语句建立触发器
    CREATE OR REPLACE TRIGGER T_TB_AA
    BEFORE  INSERT  ON TB_AAA
    FOR EACH ROW 
    Begin 
    SELECT S_TB_AA.NEXTVAL INTO :NEW.ID  FROM DUAL;
    end;
    就能实现你要的效果。
      

  6.   

    就 INSERT INTO your_table (id,other) VALUES(BSWXWMSEQ.nextval,'liulif'); 可以解决问题了哈或是再加个触发器CREATE OR REPLACE TRIGGER trg_your_table
    BEFORE INSERT ON your_table FOR EACH ROW
    BEGIN
    SELECT BSWXWMSEQ.nextval.nextval INTO :new.id FROM dual;
    END;插入数据 INSERT INTO your_table (other) VALUES('liulif');
      

  7.   

    不用建序列也可以
    INSERT INTO test (id,name)  values ((select max(id)  from test)+1,'a') ;
    name 为char(1) id为number
      

  8.   

    拜托人家可能都不知道pl/sql,你叫人家用触发器!楼主我不是贬低你,而是从你角度出发
      

  9.   

    对  用INSERT INTO test (id,name)  values ((select max(id)  from test)+1,'a') ;
    比较好  或用序列
      

  10.   

    建序列:
    CREATE SEQUENCE  序列名
      

  11.   

    INSERT INTO test (id,name)  values ((select max(id)  from test)+1,'a') ;对调用该sql语句的方法前面加synchronized关键字解决并发问题