Fungsi JetAddColumn

Berlaku untuk: Windows | Windows Server

Fungsi JetAddColumn

Fungsi JetAddColumn menambahkan kolom baru ke tabel yang sudah ada dalam database ESE.

    JET_ERR JET_API JetAddColumn(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_PCSTR szColumnName,
      __in          const JET_COLUMNDEF* pcolumndef,
      __in_opt      const void* pvDefault,
      __in          unsigned long cbDefault,
      __out_opt     JET_COLUMNID* pcolumnid
    );

Parameter

sesid

Konteks sesi database yang akan digunakan untuk panggilan API.

tableid

Tabel yang akan ditambahkan kolom.

szColumnName

Nama kolom yang akan ditambahkan. Nama harus memenuhi kriteria berikut:

  • Panjangnya harus kurang dari JET_cbNameMost karakter, tidak termasuk NULL yang mengakhiri.

  • Ini harus berisi karakter hanya dari set berikut: 0 hingga 9, Tanda baca melalui Z, a hingga z, dan semua tanda baca lainnya kecuali tanda seru (!), koma (,), tanda kurung buka ([), dan tanda kurung tutup (]) — yaitu, karakter ASCII 0x20, 0x22 melalui 0x2d, 0x2f melalui 0x5a, 0x5c, dan 0x5d melalui 0x7f.

  • Ini tidak dapat dimulai dengan spasi.

  • Ini harus berisi setidaknya satu karakter non-spasi.

pcolumndef

Penunjuk ke struktur JET_COLUMNDEF , yang menentukan data yang dapat disimpan dalam kolom.

pvDefault

Penunjuk ke buffer yang berisi nilai default untuk kolom. Panjang buffer adalah cbDefault. Jika tidak ada default, atur pvDefault ke NULL dan cbDefault ke nol. Nilai default tidak boleh lebih besar dari JET_cbColumnMost byte untuk kolom tetap atau JET_cbLVDefaultValueMost byte untuk nilai panjang. Jika nilai default lebih besar dari itu, nilai tersebut akan dipotong secara diam-diam.

Jika grbit memiliki set JET_bitColumnUserDefinedDefault, pvDefault akan ditafsirkan sebagai penunjuk ke struktur JET_USERDEFINEDDEFAULT .

cbDefault

Ukuran, dalam byte, dari buffer yang ditentukan dalam pvDefault.

pcolumnid

Penunjuk ke struktur JET_COLUMNID , yang, berhasil, akan menerima pengidentifikasi kolom yang baru dibuat. Jika gagal, nilainya tidak ditentukan.

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.

JET_errFixedDDL

Upaya dilakukan untuk mengubah definisi data tabel DDL tetap. Contoh tabel dengan DDL tetap adalah Tabel Templat.

JET_errInvalidParameter

Parameter yang tidak valid diteruskan ke API. Beberapa contoh parameter yang tidak valid adalah:

  • Melewati ukuran struktur JET_COLUMNDEF yang salah di anggota cbStruct-nya .

  • Meneruskan JET_bitColumnUserDefinedDefault, tetapi tidak mengatur cbDefault ke sizeof(JET_USERDEFINEDDEFAULT).

JET_errInTransaction

Upaya dilakukan untuk menambahkan kolom dengan set bit JET_bitColumnUnversioned, tetapi sesi saat ini sedang dalam transaksi.

JET_errColumnDuplicate

Kolom sudah ada. Upaya dilakukan untuk menambahkan kolom tanpa informasi versi, dan kolom tersebut sudah ada.

JET_errTableNotEmpty

Tabel berisi data. Kolom Pembaruan Escrow hanya dapat ditambahkan ke tabel kosong.

JET_errRecordTooBig

Catatannya terlalu besar. Jumlah parameter cbMax untuk kolom tetap tidak boleh melebihi nilai tertentu.

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_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_errCallbackNotResolved

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

JET_wrnColumnMaxTruncated

Peringatan yang menunjukkan bahwa panjang maksimum (cbMax) kolom tetap atau variabel lebih besar dari JET_cbColumnMost. Batas ini tidak berlaku untuk Nilai Panjang (yaitu JET_coltypLongBinary dan JET_coltypLongText).

JET_errInvalidName

Nama yang tidak valid diteruskan sebagai szColumnName. Untuk informasi selengkapnya tentang pembatasan, lihat kriteria untuk szColumnName.

JET_errInvalidColumnType

Bidang coltyp tidak diatur ke tipe kolom yang valid.

JET_errInvalidCodePage

Parameter cp struktur JET_COLUMNDEF 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_errTaggedNotNULL

JET_bitColumnNotNULL tidak dapat digunakan dengan kolom bertag, Nilai Panjang, atau SLV.

JET_errInvalidgrbit

Kombinasi grbit yang tidak valid ditentukan. Beberapa alasan kesalahan ini adalah:

  • JET_bitColumnFixed digunakan pada kolom bertag, Nilai Panjang, atau SLV.

  • JET_bitColumnEscrowUpdate digunakan pada kolom yang bukan berjenis JET_coltypLong.

  • JET_bitColumnEscrowUpdate digunakan pada kolom Versi (JET_bitColumnVersion).

  • JET_bitColumnEscrowUpdate digunakan pada kolom AutoIncremnt (JET_bitColumnAutoincrement).

  • JET_bitColumnEscrowUpdate digunakan pada kolom yang tidak memiliki nilai default (cbDefault sama dengan nol).

  • JET_bitColumnFinalize digunakan pada kolom yang bukan kolom Pembaruan Escrow (JET_bitColumnEscrowUpdate tidak diatur).

  • JET_bitColumnDeleteOnZero digunakan pada kolom yang bukan kolom Pembaruan Escrow (JET_bitColumnEscrowUpdate tidak diatur).

  • JET_bitColumnAutoincrement digunakan pada kolom yang tidak JET_coltypLong.

    Windows 2000: Alasan kode kesalahan ini hanya digunakan di Windows 2000.

    JET_bitColumnAutoincrement digunakan pada kolom yang tidak JET_coltypLong atau JET_coltypCurrency.

    Windows XP: Alasan kode kesalahan ini digunakan di Windows XP dan sistem operasi yang lebih baru.

  • JET_bitColumnVersion digunakan pada kolom yang tidak JET_coltypLong.

  • JET_bitColumnVersion digunakan pada kolom autoincrement.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnFixed.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnNotNULL.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnVersion.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnAutoincrement.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnUpdatable.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnEscrowUpdate.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnFinalize.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnDeleteOnZero.

  • JET_bitColumnUserDefinedDefault digunakan bersama dengan JET_bitColumnMaybeNull.

  • JET_bitColumnUserDefinedDefault digunakan pada kolom yang tidak diberi tag (yang tetap atau variabel).

JET_errMultiValuedColumnMustBeTagged

Kolom multinilai (JET_bitColumnMultiValued) hanya dapat digunakan pada kolom bertag atau Nilai Panjang (JET_coltypLongBinary atau JET_coltypLongText).

JET_errCannotBeTagged

Upaya dilakukan untuk menggunakan kolom bertag ketika kolom mungkin tidak ditandai. Beberapa batasan untuk melarang kolom yang diberi tag adalah:

  • Kolom Pembaruan Escrow (JET_bitColumnEscrowUpdate) tidak dapat digunakan pada kolom bertag atau Nilai Panjang (JET_coltypLongBinary atau JET_coltypLongText).

  • Kolom autoincrement mungkin tidak ditandai.

  • Kolom Versi mungkin tidak ditandai.

JET_errExclusiveTableLockRequired

Kunci eksklusif pada tabel diperlukan untuk operasi ini.

JET_wrnColumnMaxTruncated

Peringatan yang menunjukkan bahwa panjang maksimum (cbMax) kolom tetap atau variabel lebih besar dari JET_cbColumnMost. Batas ini tidak berlaku untuk Nilai Panjang (yaitu JET_coltypLongBinary dan JET_coltypLongText).

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 JetAddColumnW (Unicode) dan JetAddColumnA (ANSI).

Lihat juga

JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2