我想用序列号填充一列,但单个序列是不够的。如果您愿意,此列的行为会有点像“子 ID”;表中记录组的递增 id。
计划是在使用触发器插入时获取“序列中的下一个数字”,就像正常情况一样sequence
可以使用正常一样。但是,不仅仅是“下一个数字”,它还需要是给定结果集中的“下一个数字”。
考虑以下示例数据,其中display_id
列是我需要帮助管理的序列,它取决于记录的值group_name
..的记录值
编号 | 组名 | display_id ------------------------------ 5 | 甲组 | 3 4 | 甲组 | 2 3 | 甲组 | 1 2 | B组 | 2 1 | B组 | 1
我正在考虑像这样的查询来获取“下一个数字” GroupA
:
select max(record_id) + 1
from my_records
where group_name = 'GroupA'
因为GroupA
它返回 4,但GroupB
它返回 3。
当然,我们可以使用上述查询,但会失去 a 的原子优势sequence
。有什么方法可以自信地管理这样的序列吗?
我们并不担心可能会跳过数字(因为序列可能)。
编辑:
我们对由于回滚等(与序列一样)而错过一两个数字感到满意。但是,我们的要求仍然是该display_id
列保持多个序列。