JetCreateTableColumnIndex 함수
적용 대상: Windows | Windows Server
JetCreateTableColumnIndex 함수
JetCreateTableColumnIndex 함수는 초기 인덱스 집합과 JET_TABLECREATE 구조체 배열의 초기 열 집합을 사용하여 ESE 데이터베이스에 테이블을 만듭니다. JetCreateTableColumnIndex라는 이름은 개체를 만드는 순서에서 비롯됩니다. 먼저 테이블, 열을 만든 다음 마지막으로 인덱스를 만듭니다.
JET_ERR JET_API JetCreateTableColumnIndex(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in_out JET_TABLECREATE* ptablecreate
);
매개 변수
sesid
API 호출에 사용할 데이터베이스 세션 컨텍스트입니다.
dbid
API 호출에 사용할 데이터베이스 식별자입니다.
ptablecreate
만들 테이블을 정의하는 JET_TABLECREATE 구조체에 대한 포인터입니다. 자세한 내용은 JET_TABLECREATE 참조하세요.
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errCallbackNotResolved |
콜백 함수를 확인할 수 없습니다. DLL을 찾을 수 없거나 DLL의 함수를 찾지 못했을 수 있습니다. 충분한 로깅을 사용하도록 설정하면 이벤트 로그에서 자세한 정보를 제공합니다. |
JET_errCannotIndex |
에스크로 업데이트 또는 SLV 열을 통해 인덱싱을 시도했습니다(SLV 열은 더 이상 사용되지 않음). |
JET_errCannotNestDDL |
ptablecreate-grbit>가 JET_bitTableCreateTemplateTable 지정하지만 ptablecreate-szTemplateTableName>이 NULL로 설정됩니다. |
JET_errColumnDuplicate |
열이 이미 있습니다. |
JET_errColumnNotFound |
존재하지 않는 열에 대해 인덱싱을 시도했습니다. 존재하지 않는 열에 대해 조건부 인덱싱을 시도하면 이 오류가 발생할 수도 있습니다. |
JET_errColumnRedundant |
중복 열을 추가하려고 했습니다. 자동 증가 열은 둘 이상이어야 하며 테이블당 버전 열은 두 개 이상이어야 합니다. |
JET_errDensityInvalid |
이 오류는 JET_INDEXCREATE 구조체의 ulDensity 멤버가 20보다 작거나 100보다 큰 숫자로 설정된 경우 반환됩니다. |
JET_errDDLNotInheritable |
JET_TABLECREATE 구조체의 szTemplateTableName 멤버에 이름이 지정된 테이블이 템플릿 테이블로 표시되지 않았음을 나타냅니다(즉, 해당 테이블에 JET_bitTableCreateTemplateTable 설정되지 않음). |
JET_errIndexDuplicate |
두 개의 동일한 인덱스를 정의하려고 했습니다. |
JET_errIndexHasPrimary |
테이블에 대해 둘 이상의 기본 인덱스 지정을 시도했습니다. 테이블에는 정확히 하나의 기본 인덱스가 있어야 합니다. 기본 인덱스가 지정되지 않은 경우 데이터베이스 엔진에서 투명하게 인덱스가 만들어집니다. |
JET_errIndexInvalidDef |
잘못된 인덱스 정의가 지정되었습니다. 이 오류를 받을 수 있는 몇 가지 이유는 다음과 같습니다.
|
JET_errIndexTuplesInvalidLimits |
Windows XP 이상. JET_TUPLELIMITS 구조체가 지정되었으며 해당 제한이 지원되지 않습니다. JET_TUPLELIMITS 구조의 설명 섹션을 참조하세요. |
JET_errIndexTuplesNonUniqueOnly |
Windows XP 이상. 튜플 인덱스는 고유할 수 없습니다(즉, JET_INDEXCREATE 구조체의 grbit 멤버에는 JET_bitIndexPrimary 및 JET_bitIndexUnique 집합이 모두 없어야 함). |
JET_errIndexTuplesOneColumnOnly |
Windows XP 이상. 튜플 인덱스는 단일 열 위에만 있을 수 있습니다(즉, JET_INDEXCREATE 구조체의 grbit 멤버가 JET_bitIndexTuples 설정되고 JET_INDEXCREATE 구조체의 szKey 멤버가 둘 이상의 열을 지정하는 경우). |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP 이상. 튜플 인덱스는 기본 인덱스일 수 없습니다(즉, JET_INDEXCREATE 구조체의 grbit 멤버에 JET_bitIndexPrimary 및 JET_bitIndexTuples 집합이 모두 없어야 함). |
JET_errIndexTuplesTextColumnsOnly |
Windows XP 이상. 튜플 인덱스 는 텍스트 또는 유니코드 열에만 있을 수 있습니다. 다른 열(예: 이진 열)을 인덱싱하려고 하면 JET_errIndexTuplesTextColumnsOnly 발생합니다. |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP 이상. 튜플 인덱스는 JET_INDEXCREATE 구조체의 cbVarSegMac 멤버를 설정할 수 없습니다. |
JET_errInTransaction |
트랜잭션에 있는 동안 버전 정보 없이 인덱스 만들기를 시도했습니다. |
JET_errInvalidCodePage |
JET_COLUMNCREATE 구조체의 cp 멤버가 유효한 코드 페이지로 설정되지 않았습니다. 텍스트 열에 유효한 값은 영어(1252) 및 유니코드(1200)뿐입니다. 값이 0이면 기본값이 사용됩니다(영어, 1252). |
JET_errInvalidColumnType |
JET_COLUMNCREATE 구조체의 coltyp 멤버가 유효한 열 형식으로 설정되지 않았습니다. |
JET_errInvalidCreateIndex |
이 오류가 발생할 수 있는 몇 가지 이유는 다음과 같습니다.
|
JET_errInvalidgrbit |
grbit 멤버의 잘못된 조합이 JET_TABLECREATE 또는 JET_TABLECREATE2 지정되었습니다. grbit 멤버에 일관되지 않은 값이 포함되어 있으므로 인덱스 정의가 잘못되었습니다. 몇 가지 가능한 이유는 다음과 같습니다.
|
JET_errInvalidLanguageId |
잘못된 로캘 ID(LCID)가 전달되었습니다(JET_INDEXCREATE 구조체의 pidxunicode 멤버가 가리키는 JET_UNICODEINDEX 구조체의 lcid 멤버를 통해 또는 JET_INDEXCREATE 구조체의 lcid 필드를 통해). |
JET_errInvalidParameter |
잘못된 매개 변수가 지정되었습니다. 몇 가지 가능한 이유는 다음과 같습니다.
|
JET_errRecordTooBig |
레코드가 너무 큽습니다. 모든 고정 열에 대한 JET_COLUMNCREATE 구조체의 cbMax 멤버 합계는 특정 값을 초과해서는 안 됩니다. |
JET_errTableDuplicate |
테이블이 이미 있습니다. |
JET_errTooManyColumns |
테이블에 너무 많은 열을 추가하려고 했습니다. 테이블에는 고정 열이 JET_ccolFixedMost 이상, 가변 길이 열이 JET_ccolVarMost 이상, 태그가 지정된 열이 JET_ccolTaggedMost 수 없습니다. |
JET_errUnicodeTranslationFail |
유니코드 열을 정규화하려고 시도하는 동안 오류가 발생했습니다. 시스템 리소스가 부족하여 발생할 수 있습니다. |
설명
JetCreateTableColumnIndex를 호출하는 것은 JetCreateTableColumnIndex2를 호출하는 것과 동일하며, JET_TABLECREATE2구조의 각 필드에는 JET_TABLECREATE 해당 필드의 값이 포함되며 다음 예외가 있습니다.
sizeof(JET_TABLECREATE2)로 설정된 JET_TABLECREATE2.cbStruct
JET_TABLECREATE2.szCallback이 NULL로 설정
JET_TABLECREATE2.cbtyp이 0으로 설정
자세한 내용은 JetCreateTableColumnIndex2 를 참조하세요.
JetOpenTable과 마찬가지로 애플리케이션이 반환된 tableid를 사용하여 완료되면 일반적으로 JetCloseTable을 사용하여 닫아야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다. |
서버 |
Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다. |
머리글 |
Esent.h에서 선언되었습니다. |
라이브러리 |
ESENT.lib를 사용합니다. |
DLL |
ESENT.dll 필요합니다. |
유니코드 |
JetCreateTableColumnIndexW(유니코드) 및 JetCreateTableColumnIndexA(ANSI)로 구현됩니다. |
참고 항목
JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2