Структура JET_COLUMNCREATE

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

Структура JET_COLUMNCREATE

Структура JET_COLUMNCREATE описывает столбец для создания в базе данных.

    typedef struct tag_JET_COLUMNCREATE {
      unsigned long cbStruct;
      tchar* szColumnName;
      JET_COLTYP coltyp;
      unsigned long cbMax;
      JET_GRBIT grbit;
      void* pvDefault;
      unsigned long cbDefault;
      unsigned long cp;
      JET_COLUMNID columnid;
      JET_ERR err;
    } JET_COLUMNCREATE;

Элементы

cbStruct

Размер структуры в байтах. Это поле должно быть инициализировано в sizeof( JET_COLUMNCREATE ).

szColumnName

Имя создаваемого столбца. Имя должно соответствовать следующим критериям:

  • Длина не должна превышать JET_cbNameMost символов, не включая завершающее значение NULL.
  • Он должен содержать только символы из следующих наборов: от 0 до 9, от A до Z, от a до z и все другие знаки препинания, за исключением восклицательного знака (!), запятой (,), открывающей скобки ([) и закрывающей скобки (]), то есть символы ASCII 0x20, 0x22 через 0x2d, 0x2f через 0x5a, 0x5c 0x5d по 0x7f.
  • Он не может начинаться с пробела.
  • Он должен содержать по крайней мере один символ, отличный от пробела.

coltyp

Тип столбца (например, текстовый, двоичный или числовой). Дополнительные сведения см. в разделе JET_COLTYP.

cbMax

Максимальная длина столбца переменной длины (в байтах). Длина столбца для столбцов фиксированной длины.

grbit

Группа битов, содержащая параметры для этой структуры и содержащая ноль или более следующих значений.

Значение

Значение

JET_bitColumnFixed

Столбец является фиксированным. Он всегда будет использовать один и тот же объем пространства в строке, независимо от объема данных, хранящихся в столбце. JET_bitColumnFixed нельзя использовать с JET_bitColumnTagged. Этот бит нельзя использовать с длинными значениями, такими как JET_coltypLongText и JET_coltypLongBinary.

JET_bitColumnTagged

Столбец помечен тегом. Помеченные столбцы не занимают места в базе данных, если они не содержат данных. Этот бит нельзя использовать с JET_bitColumnFixed.

JET_bitColumnNotNULL

Для столбца никогда не должно быть задано значение NULL.

JET_bitColumnAutoincrement

Столбец увеличивается автоматически. Это число увеличивается и гарантированно будет уникальным в пределах таблицы. Однако это число может быть не непрерывным. Например, если в таблицу вставляется пять строк, столбец автоинкремента может содержать значения { 1, 2, 6, 7, 8 }.

Windows 2000: Этот бит можно использовать только для столбцов типа JET_coltypLong.

Windows Server 2003 и более поздние версии: Этот бит можно использовать только для столбцов типа JET_coltypLong или JET_coltypCurrency.

JET_bitColumnUpdatable

Этот бит действителен только при вызовах JetGetColumnInfo.

JET_bitColumnTTKey

Этот бит действителен только при вызовах JetOpenTempTable.

JET_bitColumnTTDescending

Этот бит действителен только при вызовах JetOpenTempTable.

JET_bitColumnMultiValued

Столбец может быть многозначным. Столбец с несколькими значениями может иметь ноль, одно или несколько значений, связанных с ним. Различные значения в многозначном столбце определяются элементом itagSequence различных структур, например JET_RETINFO, JET_SETINFO, JET_SETCOLUMN, JET_RETRIEVECOLUMNJET_ENUMCOLUMNVALUE. Столбцы с несколькими значениями должны быть помечены столбцами; то есть они не могут быть столбцами фиксированной или переменной длины.

JET_bitColumnEscrowUpdate

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

  • Столбец депонирования обновления можно создать только в том случае, если таблица пуста.

  • Столбец обновления условного депонирования должен иметь тип JET_coltypLong.

  • Столбец обновления депонирования должен иметь значение по умолчанию ( то есть cbDefault должно быть положительным).

  • JET_bitColumnEscrowUpdate нельзя использовать в сочетании со следующими константами:

    • JET_bitColumnTagged

    • JET_bitColumnVersion

    • JET_bitColumnAutoincrement

JET_bitColumnUnversioned

Столбец создается без версии. Другие транзакции, пытающиеся добавить столбец с тем же именем, завершатся ошибкой. Этот бит полезен только при использовании JetAddColumn. Его нельзя использовать в транзакции.

JET_bitColumnMaybeNull

Зарезервировано для последующего использования.

JET_bitColumnFinalize

Используйте JET_bitColumnDeleteOnZero вместо JET_bitColumnFinalize. JET_bitColumnFinalize указывает, что столбец может быть завершен. Если столбец, который можно завершить, имеет столбец обновления условного депонирования, который достигает нуля, строка будет удалена. Будущие версии могут вызывать функцию обратного вызова. Дополнительные сведения см. в разделе JET_CALLBACK. Столбец, который можно завершить, должен быть столбцом обновления депонирования. JET_bitColumnFinalize нельзя использовать с JET_bitColumnUserDefinedDefault.

JET_bitColumnUserDefinedDefault

Значение по умолчанию для столбца предоставляется функцией обратного вызова JET_CALLBACK. Столбец с определяемым пользователем по умолчанию должен быть столбцом с тегами. pvDefault должен указывать на структуру JET_USERDEFINEDDEFAULT , а для параметра cbDefault должно быть задано значение sizeof(JET_USERDEFINEDDEFAULT).

JET_bitColumnUserDefinedDefault нельзя использовать в сочетании со следующими константами:

  • JET_bitColumnFixed

  • JET_bitColumnNotNULL

  • JET_bitColumnVersion

  • JET_bitColumnAutoincrement

  • JET_bitColumnUpdatable

  • JET_bitColumnEscrowUpdate

  • JET_bitColumnFinalize

  • JET_bitColumnDeleteOnZero

  • JET_bitColumnMaybeNull

JET_bitColumnDeleteOnZero

Столбец является столбцом обновления условного депонирования, и когда он достигнет нуля, запись будет удалена. Обычно столбец, который можно завершить, — использовать его в качестве поля счетчика ссылок, а когда поле достигает нуля, запись удаляется. JET_bitColumnDeleteOnZero связана с JET_bitColumnFinalize. Столбец delete-on-zero должен быть столбцом обновления депонирования. JET_bitColumnDeleteOnZero нельзя использовать с JET_bitColumnFinalize. JET_bitColumnDeleteOnZero нельзя использовать с определяемыми пользователем столбцами по умолчанию.

pvDefault

Указывает на буфер, который будет значением по умолчанию для столбца. Длина буфера — cbDefault. Если значение по умолчанию отсутствует, параметру pvDefault следует задать значение NULL, а cbDefault — нулевое значение. Если для grbit задано JET_bitColumnUserDefinedDefault, pvDefault будет интерпретирован как указатель на структуру JET_USERDEFINEDDEFAULT. Значения по умолчанию не могут быть больше 255 байт. Если значение по умолчанию больше 255 байт, оно усекается без уведомления.

cbDefault

Размер (в байтах) буфера, заданного параметром pvDefault.

cp

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

columnid

При успешном выполнении идентификатор только что созданного столбца будет передан обратно в это поле. При сбое значение не определено.

Err

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

Требования

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

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Professional.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

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

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

Юникод

Реализовано как JET_COLUMNCREATE_W (Юникод) и JET_COLUMNCREATE_A (ANSI).

См. также:

JET_COLTYP
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_RETINFO
JET_SETINFO
JET_SETCOLUMN
JET_RETRIEVECOLUMN
JET_ENUMCOLUMNVALUE
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JetEscrowUpdate
JetRenameColumn
JetSetColumns