1

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

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

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

4

1 回答 1

0

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

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

例如,如果你只是说

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.

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

于 2013-03-15T09:15:25.320 回答