다음을 통해 공유


JetAddColumn 함수

적용 대상: Windows | Windows Server

JetAddColumn 함수

JetAddColumn 함수는 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
    );

매개 변수

sesid

API 호출에 사용할 데이터베이스 세션 컨텍스트입니다.

tableid

열을 추가할 테이블입니다.

szColumnName

추가할 열의 이름입니다. 이름은 다음 조건을 충족해야 합니다.

  • 종료 NULL을 포함하지 않고 길이가 JET_cbNameMost 문자보다 적어야 합니다.

  • 0부터 9까지의 문자, A부터 Z까지의 문자와 느낌표(!), 쉼표(,), 여는 대괄호([) 및 닫는 대괄호(])를 제외한 다른 모든 문장 부호( 즉, ASCII 문자 0x20, 0x2d 통해 0x22, 0x5a 0x2f, 0x5c 및 0x7f 0x5d 통해 0x5d 등) 집합의 문자만 포함되어야 합니다.

  • 공백으로 시작할 수 없습니다.

  • 공백이 아닌 문자를 하나 이상 포함해야 합니다.

pcolumndef

열에 저장할 수 있는 데이터를 정의하는 JET_COLUMNDEF 구조체에 대한 포인터입니다.

pvDefault

열의 기본값을 포함하는 버퍼에 대한 포인터입니다. 버퍼의 길이는 cbDefault입니다. 기본값이 없으면 pvDefaultNULL 로 설정하고 cbDefault 를 0으로 설정합니다. 기본값은 고정 열의 경우 JET_cbColumnMost 바이트보다 크거나 긴 값의 경우 JET_cbLVDefaultValueMost 바이트보다 클 수 없습니다. 기본값이 그보다 크면 자동으로 잘립니다.

grbit가 JET_bitColumnUserDefinedDefault 설정된 경우 pvDefaultJET_USERDEFINEDDEFAULT 구조체에 대한 포인터로 해석됩니다.

cbDefault

pvDefault에 지정된 버퍼의 크기(바이트)입니다.

pcolumnid

성공하면 새로 만든 열의 식별자를 수신하는 JET_COLUMNID 구조체에 대한 포인터입니다. 실패 시 값이 정의되지 않습니다.

반환 값

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 완료되었습니다.

JET_errFixedDDL

고정 DDL 테이블의 데이터 정의를 수정하려고 했습니다. 고정 DDL이 있는 테이블의 예는 템플릿 테이블입니다.

JET_errInvalidParameter

잘못된 매개 변수가 API에 전달되었습니다. 잘못된 매개 변수의 몇 가지 예는 다음과 같습니다.

  • cbStruct 멤버에서 JET_COLUMNDEF 구조체의 잘못된 크기를 전달합니다.

  • JET_bitColumnUserDefinedDefault 전달하지만 cbDefault 를 sizeof(JET_USERDEFINEDDEFAULT)로 설정하지 않습니다.

JET_errInTransaction

JET_bitColumnUnversioned 비트가 설정된 열을 추가하려고 했지만 세션은 현재 트랜잭션에 있습니다.

JET_errColumnDuplicate

열이 이미 있습니다. 버전 정보가 없는 열을 추가하려고 시도했으며 해당 열이 이미 있습니다.

JET_errTableNotEmpty

테이블에는 데이터가 포함됩니다. Escrow 업데이트 열은 빈 테이블에만 추가할 수 있습니다.

JET_errRecordTooBig

레코드가 너무 큽습니다. 고정 열에 대한 cbMax 매개 변수의 합계는 특정 값을 초과하면 안 됩니다.

JET_errTooManyColumns

테이블에 너무 많은 열을 추가하려고 했습니다. 테이블에는 고정 열이 JET_ccolFixedMost 이상, 가변 길이 열이 JET_ccolVarMost 이상, 태그가 지정된 열이 JET_ccolTaggedMost 수 없습니다.

JET_errColumnRedundant

중복 열을 추가하려고 했습니다. 자동 증가 열은 둘 이상이어야 하며 테이블당 버전 열은 두 개 이상이어야 합니다.

JET_errCallbackNotResolved

콜백 함수를 확인할 수 없습니다. DLL을 찾을 수 없거나 DLL의 함수를 찾지 못했을 수 있습니다. 충분한 로깅을 사용하는 경우 이벤트 로그에서 자세한 정보를 제공합니다.

JET_wrnColumnMaxTruncated

고정 열 또는 변수 열의 최대 길이(cbMax)가 JET_cbColumnMost보다 크다는 경고입니다. 이 제한은 Long 값( JET_coltypLongBinaryJET_coltypLongText)에 적용되지 않습니다.

JET_errInvalidName

잘못된 이름이 szColumnName으로 전달되었습니다. 제한 사항에 대한 자세한 내용은 szColumnName 조건을 참조하세요.

JET_errInvalidColumnType

coltyp 필드가 유효한 열 형식으로 설정되지 않았습니다.

JET_errInvalidCodePage

JET_COLUMNDEF 구조체의 cp 매개 변수가 유효한 코드 페이지로 설정되지 않았습니다. 텍스트 열에 유효한 값은 영어(1252) 및 유니코드(1200)뿐입니다. 값이 0이면 기본값이 사용됩니다(영어, 1252).

JET_errTaggedNotNULL

태그가 지정된, 긴 값 또는 SLV 열에는 JET_bitColumnNotNULL 사용할 수 없습니다.

JET_errInvalidgrbit

잘못된 grbit 조합이 지정되었습니다. 이 오류의 몇 가지 이유는 다음과 같습니다.

  • 태그가 지정된 긴 값 또는 SLV 열에 JET_bitColumnFixed 사용되었습니다.

  • JET_bitColumnEscrowUpdate JET_coltypLong 형식이 아닌 열에서 사용되었습니다.

  • JET_bitColumnEscrowUpdate 버전 열(JET_bitColumnVersion)에서 사용되었습니다.

  • JET_bitColumnEscrowUpdate autoIncrememnt 열(JET_bitColumnAutoincrement)에서 사용되었습니다.

  • JET_bitColumnEscrowUpdate 기본값이 없는 열에서 사용되었습니다(cbDefault 는 0과 같음).

  • JET_bitColumnFinalize 에스크로 업데이트 열이 아닌 열에서 사용되었습니다(JET_bitColumnEscrowUpdate 설정되지 않음).

  • JET_bitColumnDeleteOnZero 에스크로 업데이트 열이 아닌 열에서 사용되었습니다(JET_bitColumnEscrowUpdate 설정되지 않음).

  • JET_bitColumnAutoincrement JET_coltypLong 않은 열에 사용되었습니다.

    Windows 2000: 이러한 오류 코드 이유는 Windows 2000에서만 사용됩니다.

    JET_bitColumnAutoincrement JET_coltypLongJET_coltypCurrency 않은 열에서 사용되었습니다.

    Windows XP: 이러한 오류 코드 이유는 Windows XP 이상 운영 체제에서 사용됩니다.

  • JET_bitColumnVersion JET_coltypLong 않은 열에 사용되었습니다.

  • JET_bitColumnVersion 자동 증가 열에 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnFixed 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnNotNULL 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnVersion 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnAutoincrement 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnUpdatable 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnEscrowUpdate 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnFinalize 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnDeleteOnZero 함께 사용되었습니다.

  • JET_bitColumnUserDefinedDefault JET_bitColumnMaybeNull 함께 사용되었습니다.

  • 태그가 지정되지 않은 열(고정 또는 변수)에서 JET_bitColumnUserDefinedDefault 사용되었습니다.

JET_errMultiValuedColumnMustBeTagged

다중값 열(JET_bitColumnMultiValued)은 태그가 지정된 또는 긴 값(JET_coltypLongBinary 또는 JET_coltypLongText) 열에서만 사용할 수 있습니다.

JET_errCannotBeTagged

열에 태그가 지정되지 않은 경우 태그가 지정된 열을 사용하려고 했습니다. 태그가 지정된 열을 허용하지 않는 제약 조건 중 일부는 다음과 같습니다.

  • 태그가 지정된 또는 긴 값(JET_coltypLongBinary 또는 JET_coltypLongText) 열에는 에스크로 업데이트 열(JET_bitColumnEscrowUpdate)을 사용할 수 없습니다.

  • 자동 증가 열에 태그가 지정되지 않을 수 있습니다.

  • 버전 열에 태그가 지정되지 않을 수 있습니다.

JET_errExclusiveTableLockRequired

이 작업에는 테이블에 대한 배타적 잠금이 필요했습니다.

JET_wrnColumnMaxTruncated

고정 또는 변수 열의 최대 길이(cbMax)가 JET_cbColumnMost보다 큽니다. 이 제한은 긴 값( JET_coltypLongBinaryJET_coltypLongText)에는 적용되지 않습니다.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

유니코드

JetAddColumnW(유니코드) 및 JetAddColumnA(ANSI)로 구현됩니다.

참고 항목

JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2