我的理解是,唯一的区别是
CREATE TABLE T(ID IDENTITY PRIMARY KEY);
和
CREATE TABLE T(ID BIGINT IDENTITY);
是后者更有效率,因为ID
列是行ID,因此对应_ROWID_
伪列。
另外,如果我这样做
CREATE TABLE T(ID IDENTITY);
然后ID
与_ROWID_
不对应,甚至根本不是主键。
这些假设是否正确?
答案 0 :(得分:0)
根据建议,我做了一些测试。
事实证明,所有三个陈述似乎都是等同的
ID
始终是主键,与_ROWID_
列对应。
毕竟,我选择了第四种变体:
CREATE TABLE T(ID BIGINT AUTO_INCREMENT, CONSTRAINT KEY_NAME PRIMARY KEY (ID));
这样做的好处是可以指定主键的名称
在其他情况下,名称是自动生成的,类似于CONSTRAINT_0
所有这些都是H2 1.4.190。