Bagikan melalui


Fungsi JetCreateTable

Berlaku untuk: Windows | Windows Server

Fungsi JetCreateTable

Fungsi JetCreateTable membuat tabel kosong dalam database 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
    );

Parameter

sesid

Konteks sesi database yang akan digunakan.

dbid

Pengidentifikasi database yang akan digunakan.

szTableName

Nama indeks yang akan dibuat.

Nama harus diformat sesuai dengan aturan berikut:

  • Kurang dari JET_cbNameMost, tidak termasuk NULL yang mengakhiri.

  • Dibuat dari sekumpulan karakter berikut: 0 hingga 9, A hingga Z, a sampai z, dan semua tanda baca lainnya kecuali untuk "!" (tanda seru), "," (koma), "[" (kurung buka), dan "]" (tanda kurung tutup) — yaitu, karakter ASCII 0x20, 0x22 melalui 0x2d, 0x2f melalui 0x5a, 0x5c, 0x5d melalui 0x7f.

  • Tidak dimulai dengan spasi.

  • Dibuat dari setidaknya satu karakter non-spasi.

lPages

Jumlah awal halaman database yang akan dialokasikan untuk tabel. Menentukan angka yang lebih besar dari satu dapat mengurangi fragmentasi jika banyak baris disisipkan ke dalam tabel ini.

LDensity

Kepadatan tabel, dalam persentase titik. Angka harus 0 atau dalam kisaran 20 hingga 100. Meneruskan 0 berarti bahwa nilai default harus digunakan. Defaultnya adalah 80.

ptableid

Jika berhasil, pengidentifikasi tabel dikembalikan di bidang ini. Nilai tidak ditentukan jika API tidak mengembalikan JET_errSuccess.

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

Kepadatan yang tidak valid diteruskan di anggota ulDensity dalam struktur JET_TABLECREATE atau JET_TABLECREATE2 .

JET_errDDLNotInheritable

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

JET_errIndexDuplicate

Upaya dilakukan untuk menentukan dua indeks yang identik.

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_errIndexTuplesVarSegMacNotAllowed

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

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_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 dapat 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 kemungkinan alasannya 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:

  • Anggota rgcolumncreate dari struktur JET_TABLECREATE2 adalah NULL.

  • Anggota cbStruct dari salah satu struktur JET_COLUMNCREATE yang diberikan dalam anggota rgcolumncreate dari struktur JET_TABLECREATE2 tidak diatur ke sizeof( JET_COLUMNCREATE ).

  • Anggota cbKey dari struktur JET_INDEXCREATE diatur ke nol.

  • Anggota cbStruct dari struktur JET_INDEXCREATE tidak diatur ke sizeof( JET_INDEXCREATE ).

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

JetCreateTable membuat tabel yang tidak berisi kolom apa pun. Untuk menambahkan kolom, lihat JetAddColumn.

Secara internal, JetCreateTable memanggil JetCreateTableColumnIndex2, mengisi struktur JET_TABLECREATE2 dengan:

  • JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )

  • JET_TABLECREATE2.szTableName = szTableName

  • JET_TABLECREATE2.ulPages = lPage

  • JET_TABLECREATE2.ulDensity = lDensity

  • JET_TABLECREATE2.tableid = JET_tableidNil

Semua bidang lain dari struktur JET_TABLECREATE2 internal diatur ke nol atau NULL. Pada output, ptableid akan diatur ke JET_TABLECREATE2.tableid.

Lihat JetCreateTableColumnIndex2 untuk detail selengkapnya.

Seperti JetOpenTable, ketika aplikasi dilakukan menggunakan anggota tableid yang dikembalikan dari struktur JET_TABLECREATE2 , 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 JetCreateTableW (Unicode) dan JetCreateTableA (ANSI).

Lihat juga

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2