给我下面的情况。
我们必须在表中插入数据。因为它是多线程环境,所以将从多个进程中插入数据。假设有5个进程p1,p2,p3,p4,p5,它们将在表emp中插入数据。现在,所有过程都将标识列作为现有记录的下一个值插入。假设标识当前值为100,那么下一个值将通过插入记录的过程递增。任何进程都可以随时插入记录。
所有过程可以同时插入记录。没有使用oracle序列,并且表中没有主键。我们如何在流程结束时处理重复。当同时插入多个进程时,它们需要确保不必插入重复项。我们如何实现这一目标。
我建议前端应用程序Java和多线程中的序列化。仍然我被拒绝了。您能否请您帮助在PL / SQl或Java中实现这一目标
答案 0 :(得分:1)
您是否尝试在INSERT INTO查询中生成“ ID”键?
赞:insert into emp(id) values ((select max(id)+1 from empid)) ?
它需要另一个表来存储最大当前ID(在我的示例中为empid),但是它可以工作,并且您的程序无法管理要插入的ID。 因此,在多线程中,同步应该由DB完成(因为2插入不能完全在同一时间完成,因此应该始终更新该值)。