JetCreateTable 함수
적용 대상: Windows | Windows Server
JetCreateTable 함수
JetCreateTable 함수는 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
);
매개 변수
sesid
사용할 데이터베이스 세션 컨텍스트입니다.
dbid
사용할 데이터베이스 식별자입니다.
szTableName
만들 인덱스의 이름입니다.
이름은 다음 규칙에 따라 형식이 지정되어야 합니다.
종료 NULL을 포함하지 않고 JET_cbNameMost 미만이어야 합니다.
문자 집합은 0~9, A~ Z, a~ z 및 "!"를 제외한 다른 모든 문장 부호로 구성됩니다. (느낌표), "," (쉼표), "["(여는 대괄호) 및 "]"(닫는 대괄호) - 즉, ASCII 문자 0x20, 0x2d 통해 0x22, 0x5a, 0x5c, 0x5d 통해 0x7f 통해 0x2f.
공백으로 시작하지 않습니다.
공백이 아닌 문자를 하나 이상 만들어야 합니다.
lPages
테이블에 할당할 데이터베이스 페이지의 초기 수입니다. 여러 행이 이 테이블에 삽입되는 경우 1보다 큰 숫자를 지정하면 조각화를 줄일 수 있습니다.
lDensity
테이블 밀도(백분율 포인트)입니다. 숫자는 0이거나 20~100 범위여야 합니다. 0을 전달하면 기본값을 사용해야 합니다. 기본값은 80입니다.
ptableid
성공하면 테이블 식별자가 이 필드에 반환됩니다. API가 JET_errSuccess 반환하지 않으면 값이 정의되지 않습니다.
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 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_TABLECREATE 또는JET_TABLECREATE2 구조체의 ulDensity 멤버에 전달되었습니다. |
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_errIndexTuplesVarSegMacNotAllowed |
Windows XP 이상. 튜플 인덱스는 JET_INDEXCREATE 구조체의 cbVarSegMac 멤버를 설정할 수 없습니다. |
JET_errIndexTuplesTextColumnsOnly |
Windows XP 이상. 튜플 인덱스 는 텍스트 또는 유니코드 열에만 있을 수 있습니다. 다른 열(예: 이진 열)을 인덱싱하려고 하면 JET_errIndexTuplesTextColumnsOnly 발생합니다. |
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 |
유니코드 열을 정규화하려고 시도하는 동안 오류가 발생했습니다. 시스템 리소스가 부족하여 발생할 수 있습니다. |
설명
JetCreateTable 은 열을 포함하지 않는 테이블을 만듭니다. 열을 추가하려면 JetAddColumn을 참조하세요.
내부적으로 JetCreateTable 은 JetCreateTableColumnIndex2를 호출하여 다음을 사용하여 JET_TABLECREATE2 구조를 채웁니다.
JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )
JET_TABLECREATE2.szTableName = szTableName
JET_TABLECREATE2.ulPages = lPage
JET_TABLECREATE2.ulDensity = lDensity
JET_TABLECREATE2.tableid = JET_tableidNil
내부 JET_TABLECREATE2 구조체의 다른 모든 필드는 0 또는 NULL로 설정됩니다. 출력에서 ptableid 는 JET_TABLECREATE2.tableid로 설정됩니다.
자세한 내용은 JetCreateTableColumnIndex2 를 참조하세요.
JetOpenTable과 마찬가지로 애플리케이션이 JET_TABLECREATE2 구조에서 반환된 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 필요합니다. |
유니코드 |
JetCreateTableW(유니코드) 및 JetCreateTableA(ANSI)로 구현됩니다. |
참고 항목
JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2