создать следующую таблицу в 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 заявление не было кэшируются слово. (не проблема)
- Я никогда не выполнял ALTER TABLE .. ADD CONSTRAINT заявление.
Фактическая причина, почему я задаю вопрос о том, что я не уверен, заявление, которое я должен выполнить, чтобы гарантии, что первичный ключ используется в кластерном индексе. Если вы посмотрите на мой предыдущий вопрос H2 database: clustered index support, то вы можете найти в ответе Томаса Мюллера следующее заявление:
Если первичный ключ создан после того, как таблица была создана, то первичный ключ хранится в новый индекс b-tree.
Поэтому, если операторы выполняются как таковые, они отображаются в INFORMATION_SCHEMA, тогда первичный ключ создается после создания таблицы и, следовательно, идентификатор не используется в кластерном индексе (в основном в качестве ключа в данных b- дерево).
Есть ли способ гарантировать, что первичный ключ используется в кластерном индексе в H2?