다음을 통해 공유


열 정의 형식

MsiViewGetColumnInfoView 개체의 ColumnInfo 속성 다음 형식을 사용하여 데이터베이스 열 정의를 설명합니다. 각 열은 함수 또는 속성에서 반환된 해당 레코드 필드의 문자열에 의해 설명됩니다. 정의 문자열은 데이터 형식을 나타내는 단일 문자와 열 너비(해당하는 경우 문자, 그렇지 않은 경우 바이트)로 구성됩니다. 너비가 0이면 바인딩되지 않은 너비(예: 긴 텍스트 필드 및 스트림)가 지정됩니다. 대문자는 열에서 null 값이 허용됨을 나타냅니다.

열 설명자 정의 문자열
s? 문자열, 가변 길이(?=1-255)
s0 문자열, 가변 길이
i2 짧은 정수
i4 정수(Long)
v0 이진 스트림
g? 임시 문자열(?=0-255)
j? 임시 정수(?=0,1,2,4)
O0 임시 개체

 

열을 설명하는 데 사용되는 문자열은 CREATE 및 ALTER에서 사용하는 SQL 쿼리 문자열과 다음과 같은 관계를 갖습니다. 자세한 내용은 SQL 구문참조하세요.

반환된 값 SQL 구문
s0 LONGCHAR
l0 LONGCHAR 지역화 가능
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOCALIZABLE
l # CHARACTER(#) LOCALIZABLE
i2 짧은
i2 INT
i2 정수
i4 오래
v0 객체

 

문자를 대문자로 표시하지 않으면 SQL 문을 NOT NULL과 함께 추가해야 합니다.

반환된 값 SQL 구문
s0 LONGCHAR NOT NULL

 

설치 관리자는 열의 길이를 열 정의 형식으로 지정된 값으로 내부적으로 제한하지 않습니다. 필드에 입력한 데이터가 지정된 열 길이를 초과하면 패키지 유효성 검사 전달하지 못합니다. 이 경우 유효성 검사를 통과하려면 데이터 또는 데이터베이스 스키마를 변경해야 합니다. 표준 테이블의 열 길이를 변경하는 유일한 방법은 MsiDatabaseExport사용하여 테이블을 내보내고 내보낸 .idt 파일을 편집한 다음 MsiDatabaseImport사용하여 테이블을 가져오는 것입니다. 작성자는 표준 테이블에 있는 열의 열 데이터 형식, null 허용 여부 또는 지역화 특성을 변경할 수 없습니다. 작성자는 열 특성이 있는 열을 사용하여 사용자 지정 테이블을 만들 수 있습니다.

MsiDatabaseMerge 사용하여 참조 데이터베이스를 대상 데이터베이스에 병합하는 경우 열 이름, 기본 키 수 및 열 데이터 형식이 일치해야 합니다. MsiDatabaseMerge 지역화 및 열 길이 특성을 무시합니다. 참조 데이터베이스의 열 길이가 대상 데이터베이스의 해당 열 길이보다 0 이상인 경우 MsiDatabaseMerge 대상 데이터베이스의 열 길이를 참조 데이터베이스의 길이로 늘입니다.

Mergmod.dll 버전 2.0을 사용하는 경우 병합 모듈을 .msi 파일에 적용하면 기존 데이터베이스 테이블의 열 길이 또는 열 형식이 변경되지 않습니다. 그러나 모듈이 열을 추가하는 것이 유효한 테이블에 새 열을 추가하는 경우 병합 모듈의 애플리케이션은 기존 데이터베이스 테이블의 스키마를 변경할 수 있습니다. 버전 2.0보다 작은 Mergemod.dll 버전을 사용하는 경우 병합 모듈의 애플리케이션은 열 길이를 변경하지 않으며 대상 데이터베이스의 스키마를 변경하지 않습니다.