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