另外加一问题:
对表进行插入一记录操作,怎么立刻获得插入的这一记录的ID值(ID是为sequence 的nexval获得的),而且保证是多用户同时操作数据库时,这一步要准确没误,请教有什么办法?或者以另一说法:想同时对两个不同的表进行插入记录操作,一表中的sequence的值要作为另一表中的其中一项值(也就是两个表中都插入同一个值),
请问是否有SQL语句能同时这样操作两个表,或都有什么方法解决这个问题??请高手们赐教?????????????????
对表进行插入一记录操作,怎么立刻获得插入的这一记录的ID值(ID是为sequence 的nexval获得的),而且保证是多用户同时操作数据库时,这一步要准确没误,请教有什么办法?或者以另一说法:想同时对两个不同的表进行插入记录操作,一表中的sequence的值要作为另一表中的其中一项值(也就是两个表中都插入同一个值),
请问是否有SQL语句能同时这样操作两个表,或都有什么方法解决这个问题??请高手们赐教?????????????????
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;第二条问题,感觉在程序中实现比较好
你好像漏了(+)
正确应该为:
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 ...来实现,但是我 觉得这种方法不太明智?!
有没有更好的方法,请高手指教?
sequence有三个函数currval;nexval;setval;他们分别完成:取当前值、取当前之并修改对当前、设置当前值(只能向后设置)你可以在第一个表中使用nexval函数添加唯一的ID,而在第二个表中使用currval来取得同样的值。但是建议不这样使用,因为Oracle中的sequence会产生跳号现象,就是两次生成的号不连续,这是一个缺点
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(+)