之前我们使用' GENERATED ALWAYS '来生成主键的值.但现在建议我们应该使用序列来填充主键的值,而不是使用"GENERATED ALWAYS".您认为这种变化的原因是什么?这只是一个选择问题?
早期代码:
CREATE TABLE SCH.TAB1
(TAB_P INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE),
.
.
);
Run Code Online (Sandbox Code Playgroud)
现在它是
CREATE TABLE SCH.TAB1
(TAB_P INTEGER ),
.
.
);
Run Code Online (Sandbox Code Playgroud)
现在插入时,通过序列生成TAB_P的值.
我倾向于使用标识列而不是序列,但我会比较两者.
序列可以为任何目的生成数字,而标识列严格附加到表中的列.
由于序列是一个独立的对象,它可以为多个表(或其他任何表)生成数字,并且在删除任何表时不会受到影响.删除具有标识列的表时,没有该标识列最后分配的值的内存.
一个表只能有一个标识列,因此如果要将多个序列号记录到同一个表中的不同列中,序列对象可以处理该列.
数据库中序列号生成器的最常见要求是将技术键分配给行,该行由标识列很好地处理.对于更复杂的数字生成需求,序列对象提供了更大的灵活性.