假设我有以下表格。
PARENT: PARENT_ID serial, DESCRIPTION character varying(50)
CHILD: PARENT_ID integer, CHILD_ID integer, DESCRIPTION character varying(50)
我想看到的是 CHILD 中的每一行都有一个 CHILD_ID,它从 1 开始并以 1 递增,每个 PARENT_ID 都是唯一的。它类似于修订号。例如..
PARENT_ID 1, CHILD_ID 1
PARENT_ID 1, CHILD_ID 2
PARENT_ID 1, CHILD_ID 3
PARENT_ID 2, CHILD_ID 1
PARENT_ID 3, CHILD_ID 1
PARENT_ID 3, CHILD_ID 2
有没有办法自动分配 CHILD_ID 值,例如序列或约束,只有能够重用已删除的 CHILD_ID?我能弄清楚的唯一方法是影响这个 SQL 的效果。
INSERT INTO child SELECT parent_id, MAX(child_id)+1, 'description' FROM child WHERE parent_id = :PARENT_ID GROUP BY parent_id
不过,这有点骇人听闻。我意识到数据库规范化表明您不应该将一个密钥与另一个密钥相关联,但由于其他一些原因,我没有该选项。有任何想法吗?
编辑:标题很难看。如果有高分的人能想到一个更准确的,请随时更改。