如何在pl / sql中单次插入获取更新值?

时间:2013-03-15 07:42:26

标签: oracle plsql

我有一个insert命令,它将从一个临时表中获取记录并插入到oracle 10g中的实际事务表中。在此插入期间,我想在交易表中增加一个列值,而不管暂存区域中存在的值。

sql编程有没有这样的'i ++'选项?这样我就可以从实际的事务表中获取最大值并将其递增。

或者,还有其他解决办法吗?

1 个答案:

答案 0 :(得分:0)

你可以使用序列!在Oracle文档中阅读有关序列here的更多信息。

序列是独立的数据库对象,它在指定的序列中生成新的数字。

,例如,如果你只是说

CREATE SEQUENCE tblid_seq;

将创建一个名为tblid_seq的新序列,从1开始,并以1递增。

您可以对序列使用nextvalcurrval方法。

例如,每次使用tblid_seq.nextval时,您都会获得递增的值。 使用tblid_seq.currval时,您将获得tblid_seq.nextval提取的最后一个值。

如何使用它?简单。在SQL中:

INSERT INTO (tblid, val1) VALUES (tblid_seq.nextval, 'Some value');

在PL / SQL触发器,过程,函数或匿名块中,您可以使用:

var1 := tblid_seq.nextval; -- var1 is of INTEGER data type.

序列独立于任何其他数据库对象,包括您使用序列生成值的表。序列也独立于事务,您不能ROLLBACK序列值。因此,如果您可以在生成的值中存在间隙,请使用序列。