表A:
id name type  id 为primary key现在在对表进行插入操作时id要加1,如何来操作,要求+1操作与插入操作在同一sql内

解决方案 »

  1.   

    insert into TableName(id,name,type) values(
    (select (nvl(max(id),0) + 1) id from TableName) ,'AAA',1)
      

  2.   

    使用序列不好吗?
    假如已经建立序列seq_id
    insert into TableName(id,name,type) 
    values(seq_id.nextval ,'AAA',1)
      

  3.   

    insert into table_name select rownum+1 ,1,1,1,1 from table_name
      

  4.   

    sorry,不能用rownum
     除了第一条数据
     insert into table_name
    select  max (id)+1 ,1 from  table_name
      

  5.   

    建议采用gw_delphi(从容)的方法,
    使用序列会导致断号的现象,如果你的需求不考虑断号,当然用序列好。
      

  6.   

    使用max难道你删除数据后不会断号?
      

  7.   

    insert into TableName(id,name,type) values(
    (select (nvl(max(id),0) + 1) id from TableName), name, type)
      

  8.   

    vivianfdlpw() 问的好!
    如果真想断号,你用什么,我都可以给你断号,有什么难的?
    每次给用户说明时,我都会给一个序号项是用户手工填写的,
    如果用户不想断号的情况发生,OK,请你自己填写,保证不断。
    而我的主键照样使用会“断号”的序列。
    久而久之,我发现序号项逐渐就没有用处了
    请引导用户走向业务实际,而不是这些影响到好看的面子工程。