在Oracle中生成唯一批次ID

时间:2013-02-12 06:45:18

标签: sql

我需要在临时表中批量插入一些行,然后删除它们。我需要一个唯一的ID,它可以专门识别和删除插入单个事务中的行。我如何实现这一目标?

提前致谢

我想使用批量插入在临时表中放置几行,使用它与db中的其他表进行某些连接等,并在完成后删除这些行。所以一旦使用了数据,我应该能够删除它们。可能有许多用户同时使用此临时表,因此我需要一些唯一的ID来指定插入单个插入中的行,以便可以使用简单的删除语句删除它们而不删除其他用户当时输入的行   从表中删除='xxx'

2 个答案:

答案 0 :(得分:2)

通常的方法是使用序列预先生成批次ID,然后将该批次ID提供给INSERT语句:

create sequence seq_batchid;

declare
  l_BatchID number;
begin
  /* if you're using release 10 or earlier, use 
  select seq_batchid.nextval into BatchID from dual; 
  instead */  
  l_BatchID := seq_batchid.nextval; 

  INSERT INTO temp_table(BatchID, ...) (SELECT l_BatchID, ...)
end;

答案 1 :(得分:0)

Oracle序列可能有效。但要确认这一点,您需要向我们提供有关您要实现的目标的更多信息。如果你能给我们表格结构也会很好。