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