我有一个插入命令,它将从一个临时表中获取记录并插入到 oracle 10g 中的实际事务表中。在此插入期间,我想增加事务表中的一列值,而不管暂存区域中存在的值如何。
sql编程有没有这样的“i++”选项?这样我就可以从实际事务表中获得最大值并将其递增。
或者,还有其他解决方法吗?
你可以使用序列!在 Oracle 文档中阅读有关序列的更多信息。
序列是独立的数据库对象,以指定的序列生成新数字。
例如,如果你只是说
CREATE SEQUENCE tblid_seq;
将创建一个名为的新序列tblid_seq
,从 1 开始值并以 1 递增。
您可以对序列使用nextval
和currval
方法。
例如,每次使用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.
序列独立于任何其他数据库对象,包括您使用序列生成值的表。序列也独立于事务,您不能回滚序列值。因此,如果您可以在生成的值中有间隙,请使用序列。