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입니다. 기본값이 없으면 pvDefault 를 NULL 로 설정하고 cbDefault 를 0으로 설정합니다. 기본값은 고정 열의 경우 JET_cbColumnMost 바이트보다 크거나 긴 값의 경우 JET_cbLVDefaultValueMost 바이트보다 클 수 없습니다. 기본값이 그보다 크면 자동으로 잘립니다.
grbit가 JET_bitColumnUserDefinedDefault 설정된 경우 pvDefault는 JET_USERDEFINEDDEFAULT 구조체에 대한 포인터로 해석됩니다.
cbDefault
pvDefault에 지정된 버퍼의 크기(바이트)입니다.
pcolumnid
성공하면 새로 만든 열의 식별자를 수신하는 JET_COLUMNID 구조체에 대한 포인터입니다. 실패 시 값이 정의되지 않습니다.
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 완료되었습니다. |
JET_errFixedDDL |
고정 DDL 테이블의 데이터 정의를 수정하려고 했습니다. 고정 DDL이 있는 테이블의 예는 템플릿 테이블입니다. |
JET_errInvalidParameter |
잘못된 매개 변수가 API에 전달되었습니다. 잘못된 매개 변수의 몇 가지 예는 다음과 같습니다.
|
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_coltypLongBinary 및 JET_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 조합이 지정되었습니다. 이 오류의 몇 가지 이유는 다음과 같습니다.
|
JET_errMultiValuedColumnMustBeTagged |
다중값 열(JET_bitColumnMultiValued)은 태그가 지정된 또는 긴 값(JET_coltypLongBinary 또는 JET_coltypLongText) 열에서만 사용할 수 있습니다. |
JET_errCannotBeTagged |
열에 태그가 지정되지 않은 경우 태그가 지정된 열을 사용하려고 했습니다. 태그가 지정된 열을 허용하지 않는 제약 조건 중 일부는 다음과 같습니다.
|
JET_errExclusiveTableLockRequired |
이 작업에는 테이블에 대한 배타적 잠금이 필요했습니다. |
JET_wrnColumnMaxTruncated |
고정 또는 변수 열의 최대 길이(cbMax)가 JET_cbColumnMost보다 큽니다. 이 제한은 긴 값( JET_coltypLongBinary 및 JET_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