0

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

提前致谢

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

4

2 回答 2

2

通常的方法是使用序列预先生成您的 Batch ID,然后将该 Batch 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;
于 2013-02-12T07:45:50.423 回答
0

Oracle 序列可能会起作用。但要确认这一点,您需要向我们提供有关您想要实现的目标的更多信息。如果您也可以给我们表格结构,那就太好了。

于 2013-02-12T07:29:26.630 回答