另外加一问题:
对表进行插入一记录操作,怎么立刻获得插入的这一记录的ID值(ID是为sequence 的nexval获得的),而且保证是多用户同时操作数据库时,这一步要准确没误,请教有什么办法?或者以另一说法:想同时对两个不同的表进行插入记录操作,一表中的sequence的值要作为另一表中的其中一项值(也就是两个表中都插入同一个值),
请问是否有SQL语句能同时这样操作两个表,或都有什么方法解决这个问题??请高手们赐教?????????????????

解决方案 »

  1.   

    select a.customer_id,nvl(b.customer_link_name,'empty'),nvl(c.customer_type_text ,'empty') from
    customer a,customer_link b,customer_type c where a.customer_link_id=b.customer_link_id(+) and a.customer_type_id=c.customer_type_id;第二条问题,感觉在程序中实现比较好
      

  2.   

    谢谢beckhambobo(beckham) 
    你好像漏了(+)
    正确应该为:
    select a.customer_id,nvl(b.customer_link_name,'empty'),nvl(c.customer_type_text ,'empty') from
    customer a,customer_link b,customer_type c where a.customer_link_id=b.customer_link_id(+) and a.customer_type_id=c.customer_type_id(+);第二条问题,用程序实现当然不是很难,问题是怎么利用sequence,
    是否可以再用select 语句来获得当前的ID值,感觉比较麻烦,
    除非在插入记录的时候,用程序存储一个唯一值同时也插入该记录中,
    再用select * where ...来实现,但是我 觉得这种方法不太明智?!
    有没有更好的方法,请高手指教?
      

  3.   

    第二条问题:
    sequence有三个函数currval;nexval;setval;他们分别完成:取当前值、取当前之并修改对当前、设置当前值(只能向后设置)你可以在第一个表中使用nexval函数添加唯一的ID,而在第二个表中使用currval来取得同样的值。但是建议不这样使用,因为Oracle中的sequence会产生跳号现象,就是两次生成的号不连续,这是一个缺点
      

  4.   

    第一个问题答案:
    select a.customer_id,nvl(b.customer_link_name,'empty'),nvl(c.customer_type_text ,'empty') from
    customer a,customer_link b,customer_type where a.customer_link_id=b.customer_link_id(+) and a.customer_type_id=c.customer_type_id(+)
      

  5.   

    对于第二个问题可以在程序中先求出要插入的ID值(用sql语句得到select sequence.nextval from dual),再插入到两表中,则可!