Oracle中能不能用什么办法自动生成编号呀?急急...

解决方案 »

  1.   

    创建序列:create sequence SEQ
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 61
    increment by 1
    cache 30
    order;使用:insert into tname values(SEQ.nextval,其他字段值)
      

  2.   

    是不是每张表只要是insert的时候就可以用这个触发器来弄,要是加到视图里面?
      

  3.   

    这不是触发器,这是序列,你每个表插入数据的时候就 insert into tname values(SEQ.nextval,其他字段值)
      

  4.   

    可以用列的default值,用sysdate作为默认值,即可自动将时间写入,亦为唯一标志。
    我想用成seq.nextval作默认值也可以的。
      

  5.   

    --试试这个看行不?同sql server自动递增
    --建表
    CREATE TABLE table1
     (id NUMBER PRIMARY KEY,
      username VARCHAR2(50));--建序列
    CREATE SEQUENCE table1_seq
    MINVALUE 1
    MAXVALUE 9999999999
    START WITH 1
    INCREMENT BY 1
    CACHE 30
    ORDER;--建触発器
    CREATE OR REPLACE TRIGGER table1_tg
    BEFORE INSERT ON table1
    FOR EACH ROW
    BEGIN
      SELECT table1_seq.NEXTVAL INTO :NEW.id FROM DUAL;
    END;--執行
    INSERT INTO table1 (username) VALUES ('張三');
      

  6.   

    回复人: ynwpl(Brave&Heart) ( ) 信誉:100  2005-10-22 18:44:00  得分: 0  
     
     
       可以用列的default值,用sysdate作为默认值,即可自动将时间写入,亦为唯一标志。
    我想用成seq.nextval作默认值也可以的。
      
     
    谢谢这位老哥的指点..
      

  7.   

    谢谢以下两位对我的帮助.. sasacat(傻傻猫) ,  panku(辣椒虫)