_TransformView Table

This is a read-only temporary table used to view transforms with the transform view mode. This table is never persisted by the installer.

To invoke the transform view mode, obtain a handle and open the reference database. See Obtaining a Database Handle. Call MsiDatabaseApplyTransform with MSITRANSFORM_ERROR_VIEWTRANSFORM. This stops the transform from being applied to the database and dumps the transform contents into the _TransformView table. The data in the table can be accessed using SQL queries. See Working with Queries.

The _TransformView table is not cleared when another transform is applied. The table reflects the cumulative effect of successive applications. To view the transforms separately you must release the table.

The _TransformView Table has the following columns.

Column Type Key Nullable
Table Identifier Y N
Column Text Y N
Row Text Y Y
Data Text N Y
Current Text N Y

Column

Table

Name of an altered database table.

Column

Name of an altered table column or INSERT, DELETE, CREATE, or DROP.

Row

A list of the primary key values separated by tabs. Null primary key values are represented by a single space character. A Null value in this column indicates a schema change.

Data

Data, name of a data stream, or a column definition.

Current

Current value from reference database, or column a number.

Remarks

The _TransformView is held in memory by a lock count, that can be released with the following SQL command.

"ALTER TABLE _TransformView FREE".

The data in the table can be accessed using SQL queries. The SQL language has two main divisions: Data Definition Language (DDL) that is used to define all the objects in an SQL database, and Data Manipulation Language (DML) that is used to select, insert, update, and delete data in the objects defined using DDL.

The Data Manipulation Language (DML) transform operations are indicated as follows. Data Manipulation Language (DML) are those statements in SQL that manipulate, as opposed to define, data.

Transform operation SQL result
Modify data {table} {column} {row} {data} {current value}
Insert row {table} "INSERT" {row} NULL NULL
Delete row {table} "DELETE" {row} NULL NULL

The Data Definition Language (DDL) transform operations are indicated as follows. Data Definition Language (DDL) are those statements in SQL that define, as opposed to manipulate, data.

Transform operation SQL result
Add column {table} {column} NULL {defn} {column number}
Add table {table} "CREATE" NULL NULL NULL
Drop table {table} "DROP" NULL NULL NULL

When the application of a transform adds this table, the Data field receives text that can be interpreted as a 16-bit integer value. The value describes the column named in the Column field. You can compare the integer value to the constants in the following table to determine the definition of the altered column.

Bit Description
Bits 0 7
Hexadecimal: 0x0000 0x0100
Decimal: 0 255
Column width
Bit 8
Hexadecimal: 0x0100
Decimal: 256
A persistent column. Zero means a temporary column.
Bit 9
Hexadecimal: 0x0200
Decimal: 1023
A localizable column. Zero means the column cannot be localized.
Bits 10 11
Hexadecimal: 0x0000
Decimal: 0
Long integer
Hexadecimal: 0x0400
Decimal: 1024
Short integer
Hexadecimal: 0x0800
Decimal: 2048
Binary object
Hexadecimal: 0x0C00
Decimal: 3072
String
Bit 12
Hexadecimal: 0x1000
Decimal: 4096
Nullable column. Zero means the column is non-nullable.
Bit 13
Hexadecimal: 0x2000
Decimal: 8192
Primary key column. Zero means this column is not a primary key.
Bits 14 15
Hexadecimal: 0x4000 0x8000
Decimal: 16384 32768
Reserved

For a script sample that demonstrates the _TransformView table, see View a Transform.