insert into T_PROMOTION_ACTIVITY (ID,ACTIVITY_NAME,START_DATE,END_DATE,STATUS,DISCOUNT_RATE) values (3,'测试2',to_date('2009-09-01','yyyy-mm-dd'),to_date('2009-09-08','yyyy-mm-dd'),'1','0.8')突然发现 ID 不会 自增  所以我想ID的字段 每次 选择 数据库里MAX的ID号 加 1  然后在插入     请大哥们 帮我 写下整条的语句  小弟菜鸟!!!!!!!!

解决方案 »

  1.   

    用序列
    create sequence sequencename
    insert into .. values (seqname.nextval,....)
      

  2.   

    --创建一个序列,oracle没有自动增加的标识列,用序列实现的
    create sequence seq_id;
    insert into T_PROMOTION_ACTIVITY (ID,ACTIVITY_NAME,START_DATE,END_DATE,STATUS,DISCOUNT_RATE) values (
    seq_id.nextval,'测试2',to_date('2009-09-01','yyyy-mm-dd'),to_date('2009-09-08','yyyy-mm-dd'),'1','0.8') ;
      

  3.   

    insert into T_PROMOTION_ACTIVITY (ID,ACTIVITY_NAME,START_DATE,END_DATE,STATUS,DISCOUNT_RATE) 
    (select (max(id) over(order by id))+1,'测试2',to_date('2009-09-01','yyyy-mm-dd'),to_date('2009-09-08','yyyy-mm-dd'),'1','0.8' from T_PROMOTION_ACTIVITY);没测试不知是否可以
      

  4.   

    你表里如果已经有数据的话,找出最大的那个id,比如它的值为55
    建序列
    create sequence seq_t
      start with 56;
    insert into T_PROMOTION_ACTIVITY (ID,ACTIVITY_NAME,START_DATE,END_DATE,STATUS,DISCOUNT_RATE) values (seq_t.nextval,'测试2',to_date('2009-09-01','yyyy-mm-dd'),to_date('2009-09-08','yyyy-mm-dd'),'1','0.8')
      

  5.   

    3楼的语句  报错了  违反了唯一的约束    我不想 在程序里  先去获取最大ID 然后+1这样就多一步操作了   能否一条SQL 语句搞定?    
      

  6.   

    序列吧单条sql搞不定,原因:
    你想获得最大id再加1,可是又不让写在sql里
    这可能吗?
      

  7.   


    --测试数据
    create table  temp as 

    select 1 id, 0 parentid from dual 
    union 
    select 2 id, 1 parentid from dual 
    union 
    select 3 id, 1 parentid from dual 
    union 
    select 4 id, 1 parentid from dual 
    union 
    select 5 id, 0 parentid from dual 
    union 
    select 6 id, 5 parentid from dual 
    union 
    select 7 id, 6 parentid from dual 
    union 
    select 8 id, 7 parentid from dual 
    union 
    select 9 id, 2 parentid from dual 
    union 
    select 10 id, 3 parentid from dual 
    union 
    select 11 id, 9 parentid from dual 
    union 
    select 12 id, 11 parentid from dual 

    --创建函数,返回最大ID+1
    create or replace function Get_MAXId
    return int
    as
    rv int;
    begin
    select max(id)+1 into rv from temp;
    return rv;
    end Get_MAXId;
    --调用函数,插入数据
    insert into temp values(get_maxid,10 );
    --提交
    commit;
    --查询
    select * from temp
      

  8.   

    恩  一句SQL 搞不定的话 我还是在程序里 多写一步操作吧!
      

  9.   

    3楼的sql语句不行,我验证过。楼主还是建序列.nextValue
      

  10.   

    弱弱的问一下
    这个parentid算什么  和id还有那些数字有什么关系呢 
    初学ORACLE 还没看过到这种结构的SQL