update import_info set msg_id = seq_msg_id.nextval

解决方案 »

  1.   

    你这样可以把已有的数据中msg_id,从1开始增长。
    如果我想今后增加的数据,不填写该列是,该列的内容使用这个自增长的列呢?
      

  2.   

    也就是应该改这个表的定义了,是不是要写aleter ... modify...语句了?
      

  3.   

    就是说在插入的时候必须使用seq_msg_id.nextval这样的语法吗?
    也就是insert into import_info('aaa',seq_msg_id.nextval)这样?
    可是在很多其他的数据库里面都可以建立自增长的列,做插入操作的时候,不用给这一列赋值,自动使用自增长的值,在oracle里面没有这样的功能吗?
      

  4.   

    在ORACLE中好像没有,只能用seq_msg_id.nextval
      

  5.   

    可以通过建立触发器解决
    create or replace trigger trig_import
      before insert on import_info  
      for each row
    declare
      -- local variables here
    begin
      --dbms_output.put_line('Come IN...........');
      select testseq.nextval into :new.id from dual ;
    end trig_import;insert into import(name) values('test');
    commit ;
      

  6.   

    --建表
    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 ('张三');
      

  7.   

    另外有一个问题:dual是个什么表?看panku(辣椒虫)提供的例子时,我一直没有看明白。 
    table1_seq.nextval这个东西可以从dual中取得到吗?
    我select * from dual看了一下,表中只有一行一列:
    ————
    DUMMY
    ————
    x
    ________
    请那位解释一下。