关于_ROWID_的IDENTITY与BIGINT

时间:2015-12-28 12:05:24

标签: java sql database h2

我的理解是,唯一的区别是 CREATE TABLE T(ID IDENTITY PRIMARY KEY);

CREATE TABLE T(ID BIGINT IDENTITY);
是后者更有效率,因为ID列是行ID,因此对应_ROWID_伪列。

另外,如果我这样做 CREATE TABLE T(ID IDENTITY);
然后ID_ROWID_不对应,甚至根本不是主键。

这些假设是否正确?

1 个答案:

答案 0 :(得分:0)

根据建议,我做了一些测试。 事实证明,所有三个陈述似乎都是等同的 ID始终是主键,与_ROWID_列对应。

毕竟,我选择了第四种变体:
CREATE TABLE T(ID BIGINT AUTO_INCREMENT, CONSTRAINT KEY_NAME PRIMARY KEY (ID));
这样做的好处是可以指定主键的名称 在其他情况下,名称是自动生成的,类似于CONSTRAINT_0 所有这些都是H2 1.4.190。