JetAddColumn-Funktion

Gilt für: Windows | Windows Server

JetAddColumn-Funktion

Die JetAddColumn-Funktion fügt einer vorhandenen Tabelle in einer ESE-Datenbank eine neue Spalte hinzu.

    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

Der Datenbanksitzungskontext, der für den API-Aufruf verwendet werden soll.

tableid

Die Tabelle, der die Spalte hinzugefügt werden soll.

szColumnName

Der Name der hinzuzufügenden Spalte. Der Name muss die folgenden Kriterien erfüllen:

  • Es muss weniger als JET_cbNameMost Zeichen lang sein, ohne dass der abschließende NULL-Wert enthalten ist.

  • Sie darf nur Zeichen aus den folgenden Sätzen enthalten: 0 bis 9, A bis Z, a bis z und alle anderen Interpunktionszeichen mit Ausnahme von Ausrufezeichen (!), Komma (,), öffnender Klammer ([) und schließender Klammer (]), d. h. ASCII-Zeichen 0x20, 0x22 bis 0x2d, 0x2f über 0x5a, 0x5c und 0x5d über 0x7f.

  • Es kann nicht mit einem Leerzeichen beginnen.

  • Sie muss mindestens ein Zeichen ohne Leerzeichen enthalten.

pcolumndef

Ein Zeiger auf eine JET_COLUMNDEF-Struktur , die die Daten definiert, die in einer Spalte gespeichert werden können.

pvDefault

Ein Zeiger auf einen Puffer, der den Standardwert für die Spalte enthält. Die Länge des Puffers ist cbDefault. Wenn kein Standardwert vorhanden ist, legen Sie pvDefault auf NULL und cbDefault auf Null fest. Standardwerte dürfen nicht größer als JET_cbColumnMost Bytes für feste Spalten oder JET_cbLVDefaultValueMost Bytes für lange Werte sein. Wenn ein Standardwert größer ist, wird er automatisch abgeschnitten.

Wenn für grbit JET_bitColumnUserDefinedDefault festgelegt ist, wird pvDefault als Zeiger auf eine JET_USERDEFINEDDEFAULT-Struktur interpretiert.

cbDefault

Die Größe des in pvDefault angegebenen Puffers in Bytes.

pcolumnid

Ein Zeiger auf eine JET_COLUMNID-Struktur , die bei Erfolg den Bezeichner der neu erstellten Spalte empfängt. Bei einem Fehler ist der Wert nicht definiert.

Rückgabewert

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde durchgeführt.

JET_errFixedDDL

Es wurde versucht, die Datendefinition einer festen DDL-Tabelle zu ändern. Ein Beispiel für eine Tabelle mit fester DDL ist eine Vorlagentabelle.

JET_errInvalidParameter

Ein ungültiger Parameter wurde an die API übergeben. Einige Beispiele für ungültige Parameter sind:

JET_errInTransaction

Es wurde versucht, eine Spalte mit festgelegtem JET_bitColumnUnversioned Bit hinzuzufügen, aber die Sitzung befindet sich derzeit in einer Transaktion.

JET_errColumnDuplicate

Eine Spalte ist bereits vorhanden. Es wurde versucht, eine Spalte ohne Versionsinformationen hinzuzufügen, und diese Spalte ist bereits vorhanden.

JET_errTableNotEmpty

Die Tabelle enthält Daten. Eine Escrow Update-Spalte kann nur einer leeren Tabelle hinzugefügt werden.

JET_errRecordTooBig

Der Datensatz ist zu groß. Die Summe des cbMax-Parameters für die festen Spalten darf einen bestimmten Wert nicht überschreiten.

JET_errTooManyColumns

Es wurde versucht, der Tabelle zu viele Spalten hinzuzufügen. Eine Tabelle darf nicht mehr als JET_ccolFixedMost festen Spalten, nicht mehr als JET_ccolVarMost Spalten mit variabler Länge und nicht mehr als JET_ccolTaggedMost markierten Spalten enthalten.

JET_errColumnRedundant

Es wurde versucht, eine redundante Spalte hinzuzufügen. Es sollte nicht mehr als eine Autoinkrementspalte und nicht mehr als eine Versionsspalte pro Tabelle vorhanden sein.

JET_errCallbackNotResolved

Die Rückruffunktion konnte nicht aufgelöst werden. Die DLL wurde möglicherweise nicht gefunden, oder die Funktion in der DLL wurde möglicherweise nicht gefunden. Das Ereignisprotokoll enthält weitere Details, wenn eine ausreichende Protokollierung aktiviert ist.

JET_wrnColumnMaxTruncated

Eine Warnung, die angibt, dass die maximale Länge (cbMax) einer festen oder variablen Spalte größer als JET_cbColumnMost war. Dieser Grenzwert gilt nicht für lange Werte (also JET_coltypLongBinary und JET_coltypLongText).

JET_errInvalidName

Ein ungültiger Name wurde als szColumnName übergeben. Weitere Informationen zu den Einschränkungen finden Sie in den Kriterien für szColumnName.

JET_errInvalidColumnType

Das Coltypfeld wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidCodePage

Der cp-Parameter der JET_COLUMNDEF-Struktur wurde nicht auf eine gültige Codepage festgelegt. Die einzigen gültigen Werte für Textspalten sind Englisch (1252) und Unicode (1200). Der Wert 0 bedeutet, dass der Standardwert verwendet wird (Englisch, 1252).

JET_errTaggedNotNULL

JET_bitColumnNotNULL können nicht mit markierten Spalten, langen Werten oder SLV-Spalten verwendet werden.

JET_errInvalidgrbit

Es wurde eine ungültige Kombination von Grbits angegeben. Einige der Gründe für diesen Fehler sind:

  • JET_bitColumnFixed wurde für eine markierte Spalte, einen langen Wert oder eine SLV-Spalte verwendet.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte verwendet, die nicht vom Typ JET_coltypLong war.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte Version (JET_bitColumnVersion) verwendet.

  • JET_bitColumnEscrowUpdate wurde für eine AutoIncrememnt-Spalte (JET_bitColumnAutoincrement) verwendet.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte verwendet, die keinen Standardwert hatte (cbDefault war gleich 0).

  • JET_bitColumnFinalize wurde für eine Spalte verwendet, die keine Escrow Update-Spalte war (JET_bitColumnEscrowUpdate wurde nicht festgelegt).

  • JET_bitColumnDeleteOnZero wurde für eine Spalte verwendet, die keine Escrow Update-Spalte war (JET_bitColumnEscrowUpdate wurde nicht festgelegt).

  • JET_bitColumnAutoincrement wurde für eine Spalte verwendet, die nicht JET_coltypLong wurde.

    Windows 2000: Dieser Grund für den Fehlercode wird nur in Windows 2000 verwendet.

    JET_bitColumnAutoincrement wurde für eine Spalte verwendet, die weder JET_coltypLong noch JET_coltypCurrency war.

    Windows XP: Aus diesem Grund wird der Fehlercode in Windows XP und höheren Betriebssystemen verwendet.

  • JET_bitColumnVersion wurde für eine Spalte verwendet, die nicht JET_coltypLong wurde.

  • JET_bitColumnVersion wurde für eine Autoinkrementspalte verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnFixed verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnNotNULL verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnVersion verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnAutoincrement verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnUpdatable verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnEscrowUpdate verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnFinalize verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnDeleteOnZero verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnMaybeNull verwendet.

  • JET_bitColumnUserDefinedDefault wurde für eine nicht markierte Spalte (fest oder variable) verwendet.

JET_errMultiValuedColumnMustBeTagged

Eine mehrwertige Spalte (JET_bitColumnMultiValued) kann nur für eine getaggte Oder Long Value -Spalte (JET_coltypLongBinary oder JET_coltypLongText) verwendet werden.

JET_errCannotBeTagged

Es wurde versucht, eine markierte Spalte zu verwenden, wenn die Spalte möglicherweise nicht markiert ist. Einige der Einschränkungen für die Aufhebung der Zuordnung markierter Spalten sind:

  • Eine Escrow Update-Spalte (JET_bitColumnEscrowUpdate) kann nicht für eine markierte Oder Long Value-Spalte (JET_coltypLongBinary oder JET_coltypLongText) verwendet werden.

  • Eine Autoinkrementspalte wird möglicherweise nicht markiert.

  • Eine Spalte Version ist möglicherweise nicht markiert.

JET_errExclusiveTableLockRequired

Für diesen Vorgang war eine exklusive Sperre für die Tabelle erforderlich.

JET_wrnColumnMaxTruncated

Eine Warnung, die angibt, dass die maximale Länge (cbMax) einer festen oder variablen Spalte größer als JET_cbColumnMost war. Dieses Limit gilt nicht für Lange Werte ( JET_coltypLongBinary undJET_coltypLongText).

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Implementiert als JetAddColumnW (Unicode) und JetAddColumnA (ANSI).

Weitere Informationen

JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2