【发布时间】:2014-03-18 01:01:07
【问题描述】:
如何根据Oracle中特定列的值拥有多个序列;也就是说,为该列的每个不同值创建新的Sequence。
表格是:
CREATE TABLE TEST
(
TYPE VARCHAR2(20) NOT NULL ,
SERIAL_NUM INT NOT NULL,
CONSTRAINT TEST_PK PRIMARY KEY
(
TYPE,
SERIAL_NUM
)
ENABLE
);
此链接:How to create id with AUTO_INCREMENT on Oracle?
展示了如何生成自动增量Sequence,假设主键是一个属性。 如何为TYPE 列中的每个唯一值设置单独的Sequence?
我正在考虑为TYPE 中的每个可能值创建多个Sequences,为每个Sequence 创建Trigger,并根据TYPE 列值添加ifcondition 进行调情。但是,我意识到这不是正确的方法,因为我需要为添加的任何新 TYPE 创建新的 Sequence 和 Trigger。
样本数据应类似于以下内容:
TYPE SERIAL_NUM
X 1
X 2
X 3
Y 1
Y 2
Z 1
Z 2
Z 3
Z 4
任何建议...
【问题讨论】:
-
是什么阻止您对所有类型使用单个序列?
-
您要解决的业务问题是什么?为什么您要求必须有一行
serial_num为 1 表示typeA,然后另一行serial_num为 1 表示typeB?serial_num值是唯一的,你会遇到什么问题?希望您不是在尝试创建一组无间隙的值... -
实际上,没有什么能阻止我为每件商品拥有唯一的序列号。我在问这是否可能。另外,让我想到的是我有
TYPEcolumn,它是主键的一部分,我认为数据会更有条理,更容易通过@FrankSchmitt @JustinCave
标签: sql oracle triggers sequence auto-generate