想要复制并插入数据库表的一条记录,唯一修改的部分就是主键值,其他部分不变,但是该数据库表的数据字段贼老多,想有没有简单的一条SQL语句能够实现上述要求的?
想过insert into tableSrc select * from tableSrc where key = 'keyValue'
可是这样要一一列举字段,insert into有没有单独指定主键值的写法??
又想能不能有什么SQL语句能够修改一条记录生成两条记录的?
或者还有别的什么高招能够实现这一简单要求呢?
高人请赐教??

解决方案 »

  1.   

    有点不太懂你的意思 可以直接UPDATE表的主键你最好 好好写写你的意思  什么叫做复制并插入一条记录 
    insert into tableSrc select * from tableSrc where key = 'keyValue'为什么是同一个表
      

  2.   


    终于明白你的意思了
    可以插入 后 在UPDATE他的主键
      

  3.   

    SQL语法上好象没有什么技巧,不过借助一些工具象PLSQLDeveloper等,可以通过拖动产生所有列名列表,也很方便的。
      

  4.   

    这样UPDATE还会把上面的也给UPDATE了
    可以用ROWID来区分   但是你最好说一下你执行这句是在什么地方用 是在程序中还是只是一个SQL语句罢了还是在存储过程等等其他的程序中调用呀 不同的地方就需要不同的方法了
      

  5.   

    可以先建一个 QUEUE 并设置初始值,主键就从QUEUE.next中取
      

  6.   

    insert into tableSrc 
    (select * from tableSrc where key = 'keyValue'
     union 
     select * from tableSrc )
      

  7.   

    我的思路是union一条你希望的数据到积存的表中。
    不过也得写满字段名。
    如下的样子:insert into tableSrc 
    (select 'keyValue2' as key,其它字段 from tableSrc where key = 'keyValue'
     union 
     select * from tableSrc )
      

  8.   

    to love_2008(love2008 ):就要一条SQL而已
    to  licsth()  :还是得写满字段阿?
    to  ghtghtmalone(malone)  :具体点??
    to  xhwly(wly)  :手动作的方法我知道,PLSQLDEVELOP里就可以这样拷贝复制,改主键
      

  9.   

    你这个表有没有子表,就是说你在复制一条数据时,是否需要复制其字表的数据。
    如果没有子表,可以考虑为这个表,做一个插入触发器(Before Insert),并定制一个Sequence,触发器中可以这样:
    Select Sequence.NextVal Into :New.Key From Dual;你可以试一下。
      

  10.   

    支持qdragonballs(骑龙猪)的做法,但触发器似乎要稍做改动。
    declare t_key number; 
    begin
    select sequence.nextval into t_key from dual;
    :new.key:=t_key;
    end;