열 정의 형식

MsiViewGetColumnInfo보기 개체의 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 LOCALIZABLE
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOCALIZABLE
l # CHARACTER(#) LOCALIZABLE
i2 SHORT
i2 INT
i2 INTEGER
i4 LONG
v0 OBJECT

 

문자가 대문자가 아닌 경우 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 버전을 사용하는 경우 병합 모듈의 적용은 열 길이를 변경하지 않으며 대상 데이터베이스의 스키마를 변경하지 않습니다.