Функция JetCreateTableColumnIndex4W

Применимо к: Windows | Windows Server

Функция JetCreateTableColumnIndex4W создает таблицу в подсистеме расширяемого хранилища (база данных ESE( с начальным набором индексов и начальным набором столбцов из массива JET_TABLECREATE3 структур. Структура JET_TABLECREATE3 позволяет указать функцию обратного вызова.

Функция JetCreateTableColumnIndex4W появилась в Windows 8 операционной системе.

JET_ERR JET_API JetCreateTableColumnIndex4W(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in_out      JET_TABLECREATE3* ptablecreate
);

Параметры

sesid

Контекст сеанса базы данных, используемый для вызова API.

dbid

Идентификатор базы данных, используемый для вызова API.

ptablecreate

Указатель на структуру JET_TABLECREATE3 , которая определяет таблицу, которую необходимо создать. Дополнительные сведения см . в разделе JET_TABLECREATE3 .

Возвращаемое значение

Эта функция возвращает тип данных JET_ERR с одним из кодов возврата, перечисленных в следующей таблице. Дополнительные сведения о возможных ошибках расширяемого хранилища (ESE) см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.

Код возврата

Описание

JET_errSuccess

Операция выполнена успешно.

JET_errCallbackNotResolved

Не удалось разрешить функцию обратного вызова. Возможно, библиотека DLL не найдена или функция в библиотеке DLL не найдена. Если ведение журнала включено достаточно, журнал событий будет предоставлять дополнительные сведения.

JET_errCannotIndex

Предпринята попытка индексировать столбец escrow-update или SLV (обратите внимание, что столбцы SLV устарели).

JET_errCannotNestDDL

Возвращается, если параметр ptablecreate-grbit> задает значение JET_bitTableCreateTemplateTable, но параметр ptablecreate-szTemplateTableName> имеет значение NULL.

JET_errColumnDuplicate

Столбец уже существует.

JET_errColumnNotFound

Предпринята попытка индексировать несуществующий столбец. Попытка условного индексирования несуществующего столбца также может привести к этой ошибке.

JET_errColumnRedundant

Предпринята попытка добавить избыточный столбец. Должно существовать не более одного столбца автоинкремента и не более одного столбца версии для каждой таблицы.

JET_errDensityInvalid

Эта ошибка будет возвращена, если для элемента ulDensityструктуры JET_INDEXCREATE2 задано число меньше 20 или более 100.

JET_errDDLNotInheritable

Означает, что таблица с именем в элементе szTemplateTableName структуры JET_TABLECREATE3 не помечена как таблица шаблонов (то есть в этой таблице не задано значение параметра JET_bitTableCreateTemplateTable).

JET_errIndexDuplicate

Предпринята попытка определить два идентичных индекса.

JET_errIndexHasPrimary

Предпринята попытка указать несколько первичных индексов для таблицы. Таблица должна иметь ровно один первичный индекс. Если первичный индекс не указан, ядро СУБД будет прозрачно создавать его.

JET_errIndexInvalidDef

Указано недопустимое определение индекса. Ниже приведены некоторые из возможных причин этой ошибки.

  • Первичный индекс является условным (то есть элемент grbit структуры JET_INDEXCREATE2 имеет JET_bitIndexPrimary значение, а член cConditionalColumn структуры JET_INDEXCREATE2 больше нуля).

  • Применяется к версиям операционной системы Windows Server, начиная с Windows Server 2003. Попытка создать индекс кортежа с ограничениями кортежа, но без передачи члена ptuplelimits в структуре JET_INDEXCREATE2 (то есть элемент grbitструктуры JET_INDEXCREATE2 имеет JET_bitIndexTupleLimits значение, но указатель ptuplelimits имеет значение NULL).

  • Передача недопустимого определения ключа в член szKeyструктуры JET_INDEXCREATE2 . Сведения о допустимых определениях см . в разделе JET_INDEXCREATE2.

  • Задание элемента cbVarSegMac в JET_INDEXCREATE2 больше значения JET_cbPrimaryKeyMost (для первичного индекса) или значения JET_cbSecondaryKeyMost (для вторичного индекса).

  • Передача недопустимой комбинации для определяемого пользователем индекса Юникода (который имеет бит JET_bitIndexUnicode значения, заданный в элементе grbitструктуры JET_INDEXCREATE2 ). Некоторые распространенные причины включают в себя элемент pidxunicodeструктуры JET_INDEXCREATE2 имеет значение NULL, или LCID, указанный в структуре pidxunicode , является недопустимым.

  • Указание многозначного столбца для первичного индекса.

  • Попытка индексировать слишком много условных столбцов. Член cConditionalColumn структуры JET_INDEXCREATE2 не должен быть больше JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Применяется к версиям Windows, начиная с Windows XP. Указана JET_TUPLELIMITS структура, и ее ограничения не поддерживаются. Дополнительные сведения см. в разделе примечаний структуры JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не может быть уникальным (то есть для элемента grbit структуры JET_INDEXCREATE2 не должно быть задано как JET_bitIndexPrimary, так и JET_bitIndexUnique значений).

JET_errIndexTuplesOneColumnOnly

Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа может находиться только над одним столбцом (то есть, если элемент grbit структуры JET_INDEXCREATE2 имеет JET_bitIndexTuples заданное значение, а элемент szKey структуры JET_INDEXCREATE2 указывает более одного столбца).

JET_errIndexTuplesSecondaryIndexOnly

Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не может быть первичным индексом (то есть элемент grbit структуры JET_INDEXCREATE2 не должен иметь JET_bitIndexPrimary и JET_bitIndexTuples).

JET_errIndexTuplesTextColumnsOnly

Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа может находиться только в текстовом столбце или столбце Юникода. Попытка индексировать другие столбцы (например, двоичные столбцы) приведет к JET_errIndexTuplesTextColumnsOnly коду ответа.

JET_errIndexTuplesVarSegMacNotAllowed

Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не позволяет задать элемент cbVarSegMacструктуры JET_INDEXCREATE2 .

JET_errInTransaction

Предпринята попытка создать индекс без сведений о версии во время транзакции.

JET_errInvalidCodePage

Член cp структуры JET_COLUMNCREATE не имеет допустимой кодовой страницы. Единственными допустимыми значениями для текстовых столбцов являются английский (1252) и Юникод (1200). Значение 0 означает, что будет использоваться значение по умолчанию (английский, 1252).

JET_errInvalidColumnType

Член coltypструктуры JET_COLUMNCREATE не имеет допустимого типа столбца.

JET_errInvalidCreateIndex

Ниже приведены некоторые причины возникновения этой ошибки.

JET_errInvalidgrbit

В структуре JET_TABLECREATE3 указана недопустимая комбинация элементов grbit.

Определение индекса является недопустимым, так как элемент grbit содержит несогласованные значения. Ниже приведены некоторые возможные причины.

  • В основном индексе указан бит игнорирования (то есть JET_bitIndexPrimary значение было передано вместе со значениями JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull или JET_bitIndexIgnoreFirstNull).

  • Пустой индекс не игнорирует элементы NULL (т. е. элемент grbitструктуры JET_INDEXCREATE2 имеет JET_bitIndexEmpty значение, но не имеет JET_bitIndexIgnoreAnyNull значения).

  • Передача структуры JET_CONDITIONALCOLUMN с недопустимым элементом grbit .

JET_errInvalidLanguageId

Был передан недопустимый код языкового стандарта (LCID) (либо через элемент lcidструктуры JET_UNICODEINDEX , на которую указывает элемент pidxunicode в структуре JET_INDEXCREATE2 , либо через поле lcidструктуры JET_INDEXCREATE2 ).

JET_errInvalidParameter

Указан недопустимый параметр. Ниже приведены некоторые возможные причины.

JET_errRecordTooBig

Запись слишком велика. Сумма элемента cbMaxструктуры JET_COLUMNCREATE для всех фиксированных столбцов не должна превышать определенное значение.

JET_errTableDuplicate

Таблица уже существует.

JET_errTooManyColumns

Предпринята попытка добавить в таблицу слишком много столбцов. Таблица может содержать не более JET_ccolFixedMost фиксированных столбцов, не более JET_ccolVarMost столбцов переменной длины и не более JET_ccolTaggedMost столбцов с тегами.

JET_errUnicodeTranslationFail

Ошибка при попытке нормализовать столбец Юникода. Это может быть вызвано отсутствием системных ресурсов.

JET_errSpaceHintsInvalid

Элемент структуры пространственных указаний JET не был правильным или не может быть практическим.

Комментарии

Функция JetCreateTableColumnIndex4W создает таблицу с начальным набором столбцов и индексов. Дополнительные столбцы и индексы можно добавлять и удалять динамически с помощью функций JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex3, JetCreateIndex4W и JetDeleteIndex .

Как и в случае с функцией JetOpenTable , когда приложение выполняется с помощью возвращаемого tableid, функция JetCloseTable должна закрыть приложение.

Требования

Требование Значение

Клиент

Требуется Windows 8.

Сервер

Требуется Windows Server 2012.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

См. также раздел

JET_CBTYP
JET_DBID
JET_ERR
JET_GRBIT
JET_INDEXCREATE
JET_INDEXCREATE2
JET_SESID
JET_TABLEID
JET_TABLECREATE2
JET_TABLECREATE3
JET_TUPLELIMITS
JetAddColumn
JetCreateIndex
JetCreateIndex2
JetCreateIndex3
JetCreateTable
JetCreateTableColumnIndex
JetDeleteColumn
JetDeleteColumn2