Fungsi JetCreateTableColumnIndex

Berlaku untuk: Windows | Windows Server

Fungsi JetCreateTableColumnIndex

Fungsi JetCreateTableColumnIndex membuat tabel dalam database ESE dengan sekumpulan indeks awal dan sekumpulan kolom awal dari array struktur JET_TABLECREATE . Nama JetCreateTableColumnIndex berasal dari urutan pembuatan objek. Ini pertama-tama membuat tabel, kolom, dan akhirnya mengindeks.

    JET_ERR JET_API JetCreateTableColumnIndex(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in_out      JET_TABLECREATE* ptablecreate
    );

Parameter

sesid

Konteks sesi database yang digunakan untuk panggilan API.

dbid

Pengidentifikasi database yang digunakan untuk panggilan API.

ptablecreate

Penunjuk ke struktur JET_TABLECREATE yang menentukan tabel yang akan dibuat. Lihat JET_TABLECREATE untuk detail selengkapnya.

Tampilkan Nilai

Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.

Menampilkan kode

Deskripsi

JET_errSuccess

Operasi berhasil diselesaikan.

JET_errCallbackNotResolved

Fungsi panggilan balik tidak dapat diatasi. DLL mungkin belum ditemukan, atau fungsi di DLL mungkin belum ditemukan. Dengan pengelogan yang memadai diaktifkan, log peristiwa akan memberikan detail lebih lanjut.

JET_errCannotIndex

Upaya dilakukan untuk mengindeks melalui kolom escrow-update atau SLV (perhatikan bahwa kolom SLV tidak digunakan lagi).

JET_errCannotNestDDL

Jika ptablecreate-grbit> menentukan JET_bitTableCreateTemplateTable, tetapi ptablecreate-szTemplateTableName> diatur ke NULL.

JET_errColumnDuplicate

Kolom sudah ada.

JET_errColumnNotFound

Upaya dilakukan untuk mengindeks kolom yang tidak ada. Mencoba mengindeks secara kondisional melalui kolom yang tidak ada juga dapat menghasilkan kesalahan ini.

JET_errColumnRedundant

Upaya dilakukan untuk menambahkan kolom redundan. Tidak boleh ada lebih dari satu kolom autoincrement, dan tidak lebih dari satu kolom versi per tabel.

JET_errDensityInvalid

Kesalahan ini akan dikembalikan jika anggota ulDensity dari struktur JET_INDEXCREATE diatur ke angka kurang dari 20 atau lebih dari 100.

JET_errDDLNotInheritable

Menandakan bahwa tabel yang dinamai dalam anggota szTemplateTableName dari struktur JET_TABLECREATE tidak ditandai sebagai tabel templat (artinya, tabel tersebut tidak memiliki kumpulan JET_bitTableCreateTemplateTable).

JET_errIndexDuplicate

Upaya untuk menentukan dua indeks identik dilakukan.

JET_errIndexHasPrimary

Upaya dilakukan untuk menentukan lebih dari satu indeks utama untuk tabel. Tabel harus memiliki tepat satu indeks utama. Jika tidak ada indeks utama yang ditentukan, mesin database akan membuatnya secara transparan.

JET_errIndexInvalidDef

Definisi indeks yang tidak valid ditentukan. Beberapa alasan yang mungkin untuk menerima kesalahan ini adalah:

  • Indeks utama bersyarat (yaitu, anggota grbit struktur JET_INDEXCREATE memiliki set JET_bitIndexPrimary, dan anggota cConditionalColumn dari struktur JET_INDEXCREATE lebih besar dari nol).

  • Windows Server 2003 dan yang lebih baru. Mencoba membuat indeks tuple dengan batas tuple, tetapi tanpa melewati anggota ptuplelimits dalam struktur JET_INDEXCREATE (artinya, anggota grbit struktur JET_INDEXCREATE telah JET_bitIndexTupleLimits ditetapkan, tetapi pointer ptuplelimits adalah NULL).

  • Meneruskan definisi kunci yang tidak valid di anggota szKey dari struktur JET_INDEXCREATE . Lihat JET_INDEXCREATE untuk diskusi definisi yang valid.

  • Mengatur anggota cbVarSegMac di JET_INDEXCREATE menjadi lebih besar dari JET_cbPrimaryKeyMost (untuk indeks utama) atau lebih besar dari JET_cbSecondaryKeyMost (untuk indeks sekunder).

  • Meneruskan kombinasi yang tidak valid untuk indeks Unicode yang ditentukan pengguna (yang memiliki bit JET_bitIndexUnicode diatur dalam anggota grbitJET_INDEXCREATE). Beberapa penyebab umum termasuk anggota pidxunicode dari struktur JET_INDEXCREATE adalah NULL, atau LCID yang ditentukan dalam struktur pidxunicode tidak valid.

  • Menentukan kolom multinilai untuk indeks utama.

  • Mencoba mengindeks terlalu banyak kolom bersyarat. Anggota cConditionalColumn dari struktur JET_INDEXCREATE tidak boleh lebih besar dari JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Windows XP dan yang lebih baru. Struktur JET_TUPLELIMITS ditentukan, dan batasnya tidak didukung. Lihat bagian keterangan dari struktur JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP dan yang lebih baru. Indeks tuple tidak boleh unik (yaitu, anggota grbit struktur JET_INDEXCREATE tidak boleh memiliki JET_bitIndexPrimary dan set JET_bitIndexUnique).

JET_errIndexTuplesOneColumnOnly

Windows XP dan yang lebih baru. Indeks tuple hanya dapat melebihi satu kolom (yaitu, jika anggota grbit struktur JET_INDEXCREATE memiliki kumpulan JET_bitIndexTuples , dan anggota szKey dari struktur JET_INDEXCREATE menentukan lebih dari satu kolom).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP dan yang lebih baru. Indeks tuple tidak boleh menjadi indeks utama (yaitu, anggota grbit struktur JET_INDEXCREATE tidak boleh memiliki JET_bitIndexPrimary dan JET_bitIndexTuples yang ditetapkan).

JET_errIndexTuplesTextColumnsOnly

Windows XP dan yang lebih baru. Indeks tuple hanya dapat berada di teks atau kolom Unicode. Upaya untuk mengindeks kolom lain (seperti kolom biner) akan menghasilkan JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP dan yang lebih baru. Indeks tuple tidak memungkinkan anggota cbVarSegMac dari struktur JET_INDEXCREATE diatur.

JET_errInTransaction

Upaya dilakukan untuk membuat indeks tanpa informasi versi saat dalam transaksi.

JET_errInvalidCodePage

Anggota cp dari struktur JET_COLUMNCREATE tidak diatur ke halaman kode yang valid. Satu-satunya nilai yang valid untuk kolom teks adalah Bahasa Inggris (1252) dan Unicode (1200). Nilai 0 berarti default akan digunakan (Inggris, 1252).

JET_errInvalidColumnType

Anggota coltyp dari struktur JET_COLUMNCREATE tidak diatur ke jenis kolom yang valid.

JET_errInvalidCreateIndex

Beberapa alasan kesalahan ini mungkin terjadi:

JET_errInvalidgrbit

Kombinasi anggota grbit yang tidak valid ditentukan dalam JET_TABLECREATE atau JET_TABLECREATE2.

Definisi indeks tidak valid karena anggota grbit berisi nilai yang tidak konsisten. Beberapa alasan yang mungkin adalah:

  • Indeks utama memiliki bit abaikan yang ditentukan (yaitu, JET_bitIndexPrimary diteruskan dengan JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull, atau JET_bitIndexIgnoreFirstNull).

  • Indeks kosong tidak mengabaikan anggota NULL apa pun (yaitu, anggota grbit struktur JET_INDEXCREATE memiliki set JET_bitIndexEmpty, tetapi tidak memiliki set JET_bitIndexIgnoreAnyNull).

  • Melewati struktur JET_CONDITIONALCOLUMN dengan anggota grbit yang tidak valid.

JET_errInvalidLanguageId

ID Lokal (LCID) tidak valid diteruskan (baik melalui anggota lcid dari struktur JET_UNICODEINDEX yang ditunjukkan oleh anggota pidxunicode dalam struktur JET_INDEXCREATE , atau melalui bidang lcid dari struktur JET_INDEXCREATE ).

JET_errInvalidParameter

Parameter yang tidak valid diberikan. Beberapa kemungkinan alasannya adalah:

JET_errRecordTooBig

Catatannya terlalu besar. Jumlah anggota cbMax dari struktur JET_COLUMNCREATE untuk semua kolom tetap tidak boleh melebihi nilai tertentu.

JET_errTableDuplicate

Tabel sudah ada.

JET_errTooManyColumns

Upaya dilakukan untuk menambahkan terlalu banyak kolom ke tabel. Tabel tidak boleh memiliki lebih dari JET_ccolFixedMost kolom tetap, tidak lebih dari JET_ccolVarMost kolom panjang variabel, dan tidak lebih dari kolom yang diberi tag JET_ccolTaggedMost.

JET_errUnicodeTranslationFail

Terjadi kesalahan saat mencoba menormalkan kolom Unicode. Ini dapat disebabkan oleh kehabisan sumber daya sistem.

Keterangan

Memanggil JetCreateTableColumnIndex identik dengan memanggil JetCreateTableColumnIndex2, dengan setiap bidang dalam struktur JET_TABLECREATE2 yang berisi nilai bidang JET_TABLECREATE yang sesuai, dengan pengecualian berikut:

  • JET_TABLECREATE2.cbStruct diatur ke sizeof( JET_TABLECREATE2)

  • JET_TABLECREATE2.szCallback diatur ke NULL

  • JET_TABLECREATE2.cbtyp diatur ke 0

Lihat JetCreateTableColumnIndex2 untuk detail selengkapnya.

Seperti JetOpenTable, ketika aplikasi dilakukan menggunakan tableid yang dikembalikan, biasanya harus ditutup dengan JetCloseTable.

Persyaratan

Persyaratan Nilai

Klien

Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional.

Server

Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.

Header

Dinyatakan dalam Esent.h.

Pustaka

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Unicode

Diimplementasikan sebagai JetCreateTableColumnIndexW (Unicode) dan JetCreateTableColumnIndexA (ANSI).

Lihat juga

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2