主鍵信息創建在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中的聚集索引中使用?