【发布时间】:2020-11-11 12:12:12
【问题描述】:
我有一个客户要求,需要每天唯一的 ID。我正在开发 Oracle 12c。
在这种情况下,表 (Client_Doc) 的结构如下:
Doc_ID (PK), Date(PK), Doc_Description, Other_Columns
样本数据如下:
Value_Date Doc_ID Doc_Description
01-11-2020 1 Test Doc
01-11-2020 2 User Info
01-11-2020 3 Customer Doc
02-11-2020 1 Live
02-11-2020 2 Region
03-11-2020 1 Test
所以如果我想生成 ID,我可以这样做:
SELECT NVL(MAX(Doc_ID), 0) + 1
INTO V_ID
FROM Client_Doc
WHERE Value_Date = :P_DATE;
但由于脏读和大量表行的性能问题,这不是一个好的做法,并且由于要求也不能使用序列。满足要求的最佳方法是什么?
【问题讨论】:
-
如果您在任何给定日期允许在
DOC_ID中出现空白,则在此处提出并回答了几乎相同的问题:stackoverflow.com/q/38913246/5174436