Я создаю следующую таблицу в H2:
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
Эти утверждения не являются теми, о которых я говорил, поэтому вопрос заключается в следующем:
Является ли информация в TABLES и CONSTRAINS отражением реального SQL, который был выполнен в базе данных?
- В оригинальной инструкции CREATE TABLE
не было CACHED слова. (не проблема)
- Я никогда не выполнял ALTER TABLE .. ADD CONSTRAINT оператор.
Фактическая причина, по которой я задаю этот вопрос, заключается в том, что я не уверен, какой оператор следует выполнить, чтобы гарантировал , что первичный ключ используется в кластерном индексе.
Если вы посмотрите на мой предыдущий вопрос База данных H2: поддержка кластеризованного индекса , то в ответе Томаса Мюллера вы можете найти следующее утверждение:
Если первичный ключ создан после создания таблицы , то первичный ключ сохраняется в новом индексном b-дереве.
Поэтому, если операторы выполняются как таковые, они отображаются в INFORMATION_SCHEMA, тогда первичный ключ создается после создания таблицы и, следовательно, ID не используется в кластеризованном индексе (в основном, как ключ в b-дереве данных) ,
Есть ли способ, как можно гарантировать, что первичный ключ используется в кластеризованном индексе в H2?