我有一个web jsp应用程序和一个数据库。我想知道如何正确处理序列和插入。例如,我有一个预订表,列FLIGHT_ID, PASSPORT_ID
。这对是独一无二的。现在,当我想从我在网站上收到的数据中插入新的预订时,我就是这样做的:
BOOKING_ID
)SELECT SEQ.nextval FROM dual;
值
INSERT ...(new_booking_id,...)
查询这样可以正常工作,但我“丢失”序列的一些值,因为我在调用select时收到它们,但我不使用它们。
每当我发现异常时,可能会使序列退一步:
ALTER SEQUENCE SEQ INCREMENT BY -1;
SELECT SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE SEQ INCREMENT BY 1;
但这似乎不是最佳方式。是什么?
答案 0 :(得分:0)
如果只关注丢失某些序列值,则只能在执行INSERT之前通过检查生成一次。从同一个表执行select并仅为要成功插入的记录生成newbookingID。 (正如您所提到的,异常可能是由于Unique约束,因此您已经知道哪些值应该是唯一的)