最近做东西遇到需要在ASP.NET操作ORACLE数据库并在添加数据记录时ID值自动递增1,如何实现?

解决方案 »

  1.   

    oracle里面有一个序号器,生成语法如下:
    -- Create sequence 
    create sequence ASM_SEELOG_SEQ
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 3549
    increment by 1
    cache 20;然后,你添加数据的时候这样调用 
    insert into table(id,name) values(asm_seelog_seq.nextval,'xxxx')即可自动加1
      

  2.   

    c#中应该怎样定义asm_seelog_seq.nextval呢?否则编译报错啊.
      

  3.   

    搞定了,多谢hchxxzx(NET?摸到一点门槛) !
      

  4.   

    zeusvenus(清柳) 
    能不能分享一下解决的方法呢?谢谢
      

  5.   

    楼上的你好!很不好意思今天才看到这个结贴好久的帖子还有人关注。
    我是这样做的:
    方法一:全部任务让oracle完成,需要建序列和触发器,在.net中根本不用写这个字段:
     在ASP.NET+ORACLE添加数据记录并让ID自动增量需要在ORACLE中设序列和触发器即可,切记不是索引,ASP.NET中不管ID,具体如下:
    1、建立序列: 
    CREATE SEQUENCE seq_emergency_id 
    NOCYCLE 
    MAXVALUE 9999999999 
    START WITH 2; 2、建立触发器: 
    CREATE OR REPLACE TRIGGER set_emergency_id 
    BEFORE INSERT ON "EMERGENCY"
    FOR EACH ROW 
    DECLARE 
    next_emergency_id NUMBER; 
    BEGIN 
    --Get the next emergency id from the sequence 
    SELECT seq_emergency_id.NEXTVAL 
    INTO next_emergency_id 
    FROM dual; --use the sequence number as the primary key 
    --for the record being inserted 
    :new.id := next_emergency_id; 
    END; 如果在企业管理器中创建,在触发器说明中填:
    DECLARE 
    next_emergencycb_id NUMBER; 
    BEGIN 
    --Get the next id number from the sequence 
    SELECT seq_emergencycb_id.NEXTVAL 
    INTO next_emergencycb_id 
    FROM dual; --use the sequence number as the primary key 
    --for the record being inserted 
    :new.id := next_emergencycb_id; 
    END;方法二:
    就建个序列,然后用楼上摸门槛帅哥的方法,在.net中调用的SQL语句中用.nextval写。
      

  6.   

    这是我两个月前在CSDN上发的第一个帖子,这段时间很多人问到类似的东西,决定提交FAQ。