Функция JetCreateTable
Применимо к: Windows | Windows Server
Функция JetCreateTable
Функция JetCreateTable создает пустую таблицу в базе данных ESE.
JET_ERR JET_API JetCreateTable(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in const tchar* szTableName,
__in unsigned long lPages,
__in unsigned long lDensity,
__out JET_TABLEID* ptableid
);
Параметры
sesid
Используемый контекст сеанса базы данных.
dbid
Используемый идентификатор базы данных.
szTableName
Имя создаваемого индекса.
Имя должно быть отформатировано в соответствии со следующими правилами:
Значение меньше JET_cbNameMost, не включая завершающее значение NULL.
Состоит из следующего набора символов: от 0 до 9, от A до Z, от a до z и всех других знаков препинания, кроме "!" (восклицательный знак), "," (запятая), "[" (открывающая скобка) и "]" (закрывающая скобка) — символы ASCII 0x20, 0x22 0x2d, 0x2f 0x5a, 0x5c 0x5d 0x7f.
Не начинайте с пробела.
Должен быть сделан по крайней мере из одного символа, не являющегося пробелом.
lPages
Начальное количество страниц базы данных, выделяемых для таблицы. Если в эту таблицу вставляется несколько строк, можно уменьшить фрагментацию.
lDensity
Плотность таблицы в процентных пунктах. Число должно быть либо 0, либо находиться в диапазоне от 20 до 100. Передача 0 означает, что следует использовать значение по умолчанию. Значение по умолчанию — 80.
ptableid
При успешном выполнении идентификатор таблицы возвращается в этом поле. Значение не определено, если API не возвращает JET_errSuccess.
Возвращаемое значение
Эта функция возвращает тип данных 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_TABLECREATE или JET_TABLECREATE2 передана недопустимая плотность. |
JET_errDDLNotInheritable |
Означает, что таблица с именем в элементе szTemplateTableName структуры JET_TABLECREATE не была помечена как таблица-шаблон (то есть в этой таблице не было задано JET_bitTableCreateTemplateTable). |
JET_errIndexDuplicate |
Предпринята попытка определить два идентичных индекса. |
JET_errIndexHasPrimary |
Предпринята попытка указать несколько первичных индексов для таблицы. Таблица должна иметь ровно один первичный индекс. Если первичный индекс не указан, ядро СУБД будет прозрачно создавать его. |
JET_errIndexInvalidDef |
Указано недопустимое определение индекса. Ниже приведены некоторые из возможных причин возникновения этой ошибки.
|
JET_errIndexTuplesInvalidLimits |
Windows XP и более поздних версий. Указана JET_TUPLELIMITS структура, и ее ограничения не поддерживаются. См. раздел примечаний структуры JET_TUPLELIMITS . |
JET_errIndexTuplesNonUniqueOnly |
Windows XP и более поздних версий. Индекс кортежа не может быть уникальным (то есть элемент grbitструктуры JET_INDEXCREATE не должен иметь JET_bitIndexPrimary и JET_bitIndexUnique). |
JET_errIndexTuplesOneColumnOnly |
Windows XP и более поздних версий. Индекс кортежа может находиться только над одним столбцом (то есть, если элемент grbitструктуры JET_INDEXCREATE задан JET_bitIndexTuples, а элемент szKey структуры JET_INDEXCREATE указывает более одного столбца). |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP и более поздних версий. Индекс кортежа не может быть первичным индексом (то есть элемент grbitструктуры JET_INDEXCREATE не должен иметь JET_bitIndexPrimary и JET_bitIndexTuples). |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP и более поздних версий. Индекс кортежа не позволяет задать элемент cbVarSegMacструктуры JET_INDEXCREATE . |
JET_errIndexTuplesTextColumnsOnly |
Windows XP и более поздних версий. Индекс кортежа может находиться только в текстовом столбце или столбце Юникода. Попытка индексировать другие столбцы (например, двоичные столбцы) приведет к JET_errIndexTuplesTextColumnsOnly. |
JET_errInTransaction |
Предпринята попытка создать индекс без сведений о версии во время транзакции. |
JET_errInvalidCodePage |
Член cp структуры JET_COLUMNCREATE не имеет допустимой кодовой страницы. Единственными допустимыми значениями текстовых столбцов являются английский (1252) и Юникод (1200). Значение 0 означает, что будет использоваться значение по умолчанию (английский язык, 1252). |
JET_errInvalidColumnType |
Член coltypструктуры JET_COLUMNCREATE не имеет допустимого типа столбца. |
JET_errInvalidCreateIndex |
Эта ошибка может возникать по следующим причинам:
|
JET_errInvalidgrbit |
В JET_TABLECREATE или JET_TABLECREATE2 указано недопустимое сочетание элементов grbit. Определение индекса является недопустимым, так как элемент grbit содержит несогласованные значения. Ниже приведены некоторые возможные причины.
|
JET_errInvalidLanguageId |
Был передан недопустимый код языкового стандарта (LCID) (либо через элемент lcidструктуры JET_UNICODEINDEX , на который указывает элемент pidxunicode в структуре JET_INDEXCREATE , либо через поле lcid структуры JET_INDEXCREATE ). |
JET_errInvalidParameter |
Указан недопустимый параметр. Ниже приведены некоторые возможные причины.
|
JET_errRecordTooBig |
Запись слишком велика. Сумма элемента cbMaxструктуры JET_COLUMNCREATE для всех фиксированных столбцов не должна превышать определенное значение. |
JET_errTableDuplicate |
Таблица уже существует. |
JET_errTooManyColumns |
Предпринята попытка добавить в таблицу слишком много столбцов. Таблица может содержать не более JET_ccolFixedMost фиксированных столбцов, не более JET_ccolVarMost столбцов переменной длины и не более JET_ccolTaggedMost столбцов с тегами. |
JET_errUnicodeTranslationFail |
Произошла ошибка при попытке нормализовать столбец Юникода. Это может быть вызвано отсутствием системных ресурсов. |
Комментарии
JetCreateTable создает таблицу, которая не содержит столбцов. Сведения о добавлении столбцов см. в разделе JetAddColumn.
На внутреннем сервере JetCreateTable вызывает JetCreateTableColumnIndex2, заполняя структуру JET_TABLECREATE2 следующим образом:
JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )
JET_TABLECREATE2.szTableName = szTableName
JET_TABLECREATE2.ulPages = lPage
JET_TABLECREATE2.ulDensity = lDensity
JET_TABLECREATE2.tableid = JET_tableidNil
Для всех остальных полей внутренней структуры JET_TABLECREATE2 задано значение null или NULL. В выходных данных ptableid будет иметь значение JET_TABLECREATE2.tableid.
Дополнительные сведения см. в разделе JetCreateTableColumnIndex2 .
Как и JetOpenTable, когда приложение выполняется с помощью возвращаемого элемента tableid из структуры JET_TABLECREATE2 , его обычно следует закрывать с помощью JetCloseTable.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
Юникод |
Реализовано как JetCreateTableW (Юникод) и JetCreateTableA (ANSI). |
См. также:
JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2