主键信息创建在H2下表:H2数据库:关于INFORMATION_SCHEMA
CREATE TABLE TEST
(ID BIGINT NOT NULL PRIMARY KEY)
然后我看着INFORMATION_SCHEMA.TABLES表:
SELECT SQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'TEST'
结果:
CREATE CACHED TABLE TEST(
ID BIGINT NOT NULL
)
然后我查看INFORMATION_SCHEMA.CONSTRAINTS表:
SELECT SQL
FROM INFORMATION_SCHEMA.CONSTRAINTS
WHERE TABLE_NAME = 'TEST'
结果:
ALTER TABLE TEST
ADD CONSTRAINT CONSTRAINT_4C
PRIMARY KEY(ID)
INDEX PRIMARY_KEY_4C
这些陈述不是我所陈述的那些,因此,问题是: 是表中的信息和约束反映了在数据库中执行的怎么样真正的SQL?
- 在原来的CREATE TABLE语句 没有CACHED字。 (不成问题)
- 我从来没有执行过ALTER TABLE .. ADD CONSTRAINT声明。
实际的原因,我要问的问题是,我不知道我应该顺序执行,以保证该主键是在聚集索引中使用的语句。 如果你看一下我刚才的问题H2 database: clustered index support那么你可能在托马斯·穆勒下面的语句的答案发现:
如果主键是表被创建后创建则主密钥存储在一个新的索引b-tree。
因此,如果语句按照这种方式执行,它们将显示在INFORMATION_SCHEMA中,那么将在创建表之后创建主键,因此在聚集索引中不使用ID(基本上作为数据b-树)。
有没有办法如何保证主键在H2中的聚集索引中使用?