Crear tablas de SQL ServerCreating SQL Server Tables

En este tema se aplica a: SíSQL ServerSíbase de datos de SQL AzureSíalmacenamiento de datos de SQL Azure Sí Almacenamiento de datos paralelosTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

El SQL ServerSQL Server proveedor OLE DB de Native Client expone la ITableDefinition:: CreateTable función, lo que permite a los consumidores crear SQL ServerSQL Server tablas.The SQL ServerSQL Server Native Client OLE DB provider exposes the ITableDefinition::CreateTable function, allowing consumers to create SQL ServerSQL Server tables. Los consumidores utilizan CreateTable para crear tablas permanentes denominadas por el consumidor y tablas permanentes o temporales con nombres únicos generados por el SQL ServerSQL Server proveedor Native Client OLE DB.Consumers use CreateTable to create consumer-named permanent tables, and permanent or temporary tables with unique names generated by the SQL ServerSQL Server Native Client OLE DB provider.

Cuando el consumidor llama ITableDefinition:: CreateTable, si el valor de la propiedad DBPROP_TBL_TEMPTABLE es VARIANT_TRUE, la SQL ServerSQL Server proveedor OLE DB de Native Client genera un nombre de tabla temporal para el consumidor.When the consumer calls ITableDefinition::CreateTable, if the value of the DBPROP_TBL_TEMPTABLE property is VARIANT_TRUE, the SQL ServerSQL Server Native Client OLE DB provider generates a temporary table name for the consumer. El consumidor establece el pTableID parámetro de la CreateTable método en NULL.The consumer sets the pTableID parameter of the CreateTable method to NULL. Las tablas temporales con nombres generados por el SQL ServerSQL Server proveedor OLE DB de Native Client no aparecen en la tablas conjunto de filas, pero son accesibles a través de la IOpenRowset interfaz.The temporary tables with names generated by the SQL ServerSQL Server Native Client OLE DB provider do not appear in the TABLES rowset, but are accessible through the IOpenRowset interface.

Cuando los consumidores especifican el nombre de tabla en la pwszName miembro de la uName union en la pTableID parámetro, el SQL ServerSQL Server proveedor OLE DB de Native Client crea un SQL ServerSQL Server tabla con ese nombre.When consumers specify the table name in the pwszName member of the uName union in the pTableID parameter, the SQL ServerSQL Server Native Client OLE DB provider creates a SQL ServerSQL Server table with that name. Se aplican las restricciones de denominación de tabla de SQL ServerSQL Server y el nombre de tabla puede indicar una tabla permanente o una tabla temporal local o global. SQL ServerSQL Server table naming constraints apply, and the table name can indicate a permanent table, or either a local or global temporary table. Para obtener más información, consulte CREATE TABLE.For more information, see CREATE TABLE. El ppTableID parámetro puede ser NULL.The ppTableID parameter can be NULL.

El SQL ServerSQL Server proveedor OLE DB de Native Client puede generar los nombres de tablas permanentes o temporales.The SQL ServerSQL Server Native Client OLE DB provider can generate the names of permanent or temporary tables. Cuando el consumidor establece el pTableID parámetro en NULL y conjuntos de ppTableID para que apunte a un DBID válido*, el SQL ServerSQL Server proveedor OLE DB de Native Client devuelve el nombre generado de la tabla en la pwszName miembro de la uName unión de DBID señalado por el valor de ppTableID.When the consumer sets the pTableID parameter to NULL and sets ppTableID to point to a valid DBID*, the SQL ServerSQL Server Native Client OLE DB provider returns the generated name of the table in the pwszName member of the uName union of the DBID pointed to by the value of ppTableID. Para crear un archivo temporal, SQL ServerSQL Server tabla denominadas por el proveedor OLE DB de Native Client, el consumidor incluye la propiedad de tabla DBPROP_TBL_TEMPTABLE de OLE DB en una propiedad de tabla establecido que se hace referencia en el rgPropertySets parámetro.To create a temporary, SQL ServerSQL Server Native Client OLE DB provider-named table, the consumer includes the OLE DB table property DBPROP_TBL_TEMPTABLE in a table property set referenced in the rgPropertySets parameter. SQL ServerSQL ServerNative Client OLE DB denominado proveedor tablas temporales son locales. Native Client OLE DB provider-named temporary tables are local.

CreateTable devuelve DB_E_BADTABLEID si el eKind miembro de la pTableID parámetro no indica DBKIND_NAME.CreateTable returns DB_E_BADTABLEID if the eKind member of the pTableID parameter does not indicate DBKIND_NAME.

Uso de DBCOLUMNDESCDBCOLUMNDESC Usage

El consumidor puede indicar un tipo de datos de columna mediante el uso del pwszTypeName miembro o wType miembro.The consumer can indicate a column data type by using either the pwszTypeName member or the wType member. Si el consumidor especifica el tipo de datos en pwszTypeName, SQL ServerSQL Server proveedor OLE DB de Native Client omite el valor de wType.If the consumer specifies the data type in pwszTypeName, the SQL ServerSQL Server Native Client OLE DB provider ignores the value of wType.

Si usa el pwszTypeName miembro, el consumidor especifica el tipo de datos mediante el uso de SQL ServerSQL Server nombres de tipo de datos.If using the pwszTypeName member, the consumer specifies the data type by using SQL ServerSQL Server data type names. Los nombres de tipo de datos válidos son aquéllos devueltos en la columna TYPE_NAME del conjunto de filas de esquema PROVIDER_TYPES.Valid data type names are those returned in the TYPE_NAME column of the PROVIDER_TYPES schema rowset.

El SQL ServerSQL Server proveedor OLE DB de Native Client reconoce un subconjunto de valores DBTYPE enumerados por OLE DB en el wType miembro.The SQL ServerSQL Server Native Client OLE DB provider recognizes a subset of OLE DB-enumerated DBTYPE values in the wType member. Para obtener más información, consulte Data Type Mapping en ITableDefinition.For more information, see Data Type Mapping in ITableDefinition.

Nota

CreateTable devuelve DB_E_BADTYPE si el consumidor establece el Pclsid o pTypeInfo miembro para especificar el tipo de datos de columna.CreateTable returns DB_E_BADTYPE if consumer sets either the pTypeInfo or pclsid member to specify the column data type.

El consumidor especifica el nombre de columna en la pwszName miembro de la uName unión de DBCOLUMNDESC dbcid miembro.The consumer specifies the column name in the pwszName member of the uName union of the DBCOLUMNDESC dbcid member. El nombre de columna se especifica como una cadena de caracteres Unicode.The column name is specified as a Unicode character string. El eKind miembro de dbcid debe ser DBKIND_NAME.The eKind member of dbcid must be DBKIND_NAME. CreateTable devuelve DB_E_BADCOLUMNID si eKind no es válida, pwszName es NULL, o si el valor de pwszName no es válido SQL ServerSQL Server identificador.CreateTable returns DB_E_BADCOLUMNID if eKind is invalid, pwszName is NULL, or if the value of pwszName is not a valid SQL ServerSQL Server identifier.

Todas las propiedades de columna están disponibles en todas las columnas definidas para la tabla.All column properties are available on all columns defined for the table. CreateTable puede devolver DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED si los valores de propiedad se establecen en conflicto.CreateTable can return DB_S_ERRORSOCCURRED or DB_E_ERRORSOCCURRED if property values are set in conflict. CreateTable devuelve un error cuando la configuración de propiedad de columna no válida hace SQL ServerSQL Server error de creación de la tabla.CreateTable returns an error when invalid column property settings cause SQL ServerSQL Server table-creation failure.

Las propiedades de columna de un DBCOLUMNDESC se interpretan como sigue.Column properties in a DBCOLUMNDESC are interpreted as follows.

Id. de propiedadProperty ID DescriptionDescription
DBPROP_COL_AUTOINCREMENTDBPROP_COL_AUTOINCREMENT L/E lectura/escrituraR/W: Read/write

Valor predeterminado: VARIANT_FALSE. Descripción: establece la propiedad de identidad en la columna creada.Default: VARIANT_FALSE Description: Sets the identity property on the column created. Para SQL ServerSQL Server, la propiedad de identidad es válida para una columna única dentro de una tabla.For SQL ServerSQL Server, the identity property is valid for a single column within a table. Establecer la propiedad en VARIANT_TRUE para más de una sola columna genera un error cuando la SQL ServerSQL Server proveedor OLE DB de Native Client intenta crear la tabla en el servidor.Setting the property to VARIANT_TRUE for more than a single column generates an error when the SQL ServerSQL Server Native Client OLE DB provider attempts to create the table on the server.

El SQL ServerSQL Server propiedad identity solo es válida para el entero, numérico, y decimal tipos cuando la escala es 0.The SQL ServerSQL Server identity property is only valid for the integer, numeric, and decimal types when the scale is 0. Establecer la propiedad en VARIANT_TRUE en una columna de cualquier otro tipo de datos genera un error cuando la SQL ServerSQL Server proveedor OLE DB de Native Client intenta crear la tabla en el servidor.Setting the property to VARIANT_TRUE on a column of any other data type generates an error when the SQL ServerSQL Server Native Client OLE DB provider attempts to create the table on the server.

El SQL ServerSQL Server proveedor OLE DB de Native Client devuelve DB_S_ERRORSOCCURRED cuando DBPROP_COL_AUTOINCREMENT y DBPROP_COL_NULLABLE son VARIANT_TRUE y dwOption de DBPROP_COL_NULLABLE no es DBPROPOPTIONS_REQUIRED.The SQL ServerSQL Server Native Client OLE DB provider returns DB_S_ERRORSOCCURRED when DBPROP_COL_AUTOINCREMENT and DBPROP_COL_NULLABLE are both VARIANT_TRUE and the dwOption of DBPROP_COL_NULLABLE is not DBPROPOPTIONS_REQUIRED. Se devuelve DB_E_ERRORSOCCURRED cuando DBPROP_COL_AUTOINCREMENT y DBPROP_COL_NULLABLE son VARIANT_TRUE y dwOption de DBPROP_COL_NULLABLE es igual a DBPROPOPTIONS_REQUIRED.DB_E_ERRORSOCCURRED is returned when DBPROP_COL_AUTOINCREMENT and DBPROP_COL_NULLABLE are both VARIANT_TRUE and the dwOption of DBPROP_COL_NULLABLE equals DBPROPOPTIONS_REQUIRED. La columna se define con el SQL ServerSQL Server propiedad de identidad y el DBPROP_COL_NULLABLE dwStatus miembro se establece en DBPROPSTATUS_CONFLICTING.The column is defined with the SQL ServerSQL Server identity property and the DBPROP_COL_NULLABLE dwStatus member is set to DBPROPSTATUS_CONFLICTING.
DBPROP_COL_DEFAULTDBPROP_COL_DEFAULT L/E lectura/escrituraR/W: Read/write

Valor predeterminado: ningunoDefault: None

Descripción: crea la restricción DEFAULT de SQL ServerSQL Server para la columna.Description: Creates a SQL ServerSQL Server DEFAULT constraint for the column.

El vValue miembro DBPROP puede ser cualquiera de varios tipos.The vValue DBPROP member can be any of a number of types. El vValue.vt miembro debe especificar un tipo compatible con el tipo de datos de la columna.The vValue.vt member should specify a type compatible with the data type of the column. Por ejemplo, la definición de BSTR N/A como el valor predeterminado para una columna definida como DBTYPE_WSTR es una coincidencia compatible.For example, defining BSTR N/A as the default value for a column defined as DBTYPE_WSTR is a compatible match. Definir el mismo valor predeterminado en una columna definida como DBTYPE_R8 genera un error cuando la SQL ServerSQL Server proveedor OLE DB de Native Client intenta crear la tabla en el servidor.Defining the same default on a column defined as DBTYPE_R8 generates an error when the SQL ServerSQL Server Native Client OLE DB provider attempts to create the table on the server.
DBPROP_COL_DESCRIPTIONDBPROP_COL_DESCRIPTION L/E lectura/escrituraR/W: Read/write

Valor predeterminado: ningunoDefault: None

Descripción: La propiedad de columna DBPROP_COL_DESCRIPTION no implementa la SQL ServerSQL Server proveedor Native Client OLE DB.Description: The DBPROP_COL_DESCRIPTION column property is not implemented by the SQL ServerSQL Server Native Client OLE DB provider.

El dwStatus miembro de la estructura DBPROP devuelve DBPROPSTATUS_NOTSUPPORTED cuando el consumidor intenta escribir el valor de propiedad.The dwStatus member of the DBPROP structure returns DBPROPSTATUS_NOTSUPPORTED when the consumer attempts to write the property value.

Establecer la propiedad no constituye un error grave para el SQL ServerSQL Server proveedor Native Client OLE DB.Setting the property does not constitute a fatal error for the SQL ServerSQL Server Native Client OLE DB provider. Si todos los demás valores de parámetro son válidos, se crea la tabla de SQL ServerSQL Server.If all other parameter values are valid, the SQL ServerSQL Server table is created.
DBPROP_COL_FIXEDLENGTHDBPROP_COL_FIXEDLENGTH L/E lectura/escrituraR/W: Read/write

Valor predeterminado: VARIANT_FALSEDefault: VARIANT_FALSE

Descripción: El SQL ServerSQL Server proveedor OLE DB de Native Client utiliza DBPROP_COL_FIXEDLENGTH para determinar la asignación de tipos de datos cuando el consumidor define el tipo de datos de una columna mediante el uso de la wType miembro de DBCOLUMNDESC.Description: The SQL ServerSQL Server Native Client OLE DB provider uses DBPROP_COL_FIXEDLENGTH to determine data type-mapping when the consumer defines a column's data type by using the wType member of the DBCOLUMNDESC. Para obtener más información, consulte Data Type Mapping en ITableDefinition.For more information, see Data Type Mapping in ITableDefinition.
DBPROP_COL_NULLABLEDBPROP_COL_NULLABLE L/E lectura/escrituraR/W: Read/write

Valor predeterminado: ningunoDefault: None

Descripción: Cuando se crea la tabla, el SQL ServerSQL Server proveedor OLE DB de Native Client indica si la columna debe aceptar valores null si se establece la propiedad.Description: When creating the table, the SQL ServerSQL Server Native Client OLE DB provider indicates whether the column should accept null values if the property is set. Cuando no se establece la propiedad, la capacidad de la columna de aceptar valores NULL como valores está determinada por la opción de base de datos predeterminada ANSI_NULLS de SQL ServerSQL Server.When the property is not set, the ability of the column to accept NULL as a value is determined by the SQL ServerSQL Server ANSI_NULLS default database option.

El SQL ServerSQL Server proveedor Native Client OLE DB es un proveedor compatible con ISO.The SQL ServerSQL Server Native Client OLE DB provider is an ISO-compliant provider. Las sesiones conectadas exhiben los comportamientos ISO.Connected sessions exhibit ISO behaviors. Si el consumidor no establece DBPROP_COL_NULLABLE, las columnas aceptan valores nulos.If the consumer does not set DBPROP_COL_NULLABLE, columns accept null values.
DBPROP_COL_PRIMARYKEYDBPROP_COL_PRIMARYKEY L/E lectura/escrituraR/W: Read/write

Valor predeterminado: VARIANT_FALSE. Descripción: cuando VARIANT_TRUE, la SQL ServerSQL Server proveedor OLE DB de Native Client crea la columna con una restricción PRIMARY KEY.Default: VARIANT_FALSE Description: When VARIANT_TRUE, the SQL ServerSQL Server Native Client OLE DB provider creates the column with a PRIMARY KEY constraint.

Cuando se define como una propiedad de columna, solo una columna única puede determinar la restricción.When defined as a column property, only a single column can determine the constraint. Establecer la propiedad VARIANT_TRUE para más de una sola columna devuelve un error cuando la SQL ServerSQL Server proveedor OLE DB de Native Client intenta crear la SQL ServerSQL Server tabla.Setting the property VARIANT_TRUE for more than a single column returns an error when the SQL ServerSQL Server Native Client OLE DB provider attempts to create the SQL ServerSQL Server table.

Nota: El consumidor puede utilizar IIndexDefinition:: CreateIndex para crear una restricción PRIMARY KEY en dos o más columnas.Note: The consumer can use IIndexDefinition::CreateIndex to create a PRIMARY KEY constraint on two or more columns.

El SQL ServerSQL Server proveedor OLE DB de Native Client devuelve DB_S_ERRORSOCCURRED cuando DBPROP_COL_PRIMARYKEY y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption de DBPROP_COL_UNIQUE no es DBPROPOPTIONS_REQUIRED.The SQL ServerSQL Server Native Client OLE DB provider returns DB_S_ERRORSOCCURRED when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and the dwOption of DBPROP_COL_UNIQUE is not DBPROPOPTIONS_REQUIRED.

Se devuelve DB_E_ERRORSOCCURRED cuando DBPROP_COL_PRIMARYKEY y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption de DBPROP_COL_UNIQUE es igual a DBPROPOPTIONS_REQUIRED.DB_E_ERRORSOCCURRED is returned when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and the dwOption of DBPROP_COL_UNIQUE equals DBPROPOPTIONS_REQUIRED. La columna se define con el SQL ServerSQL Server propiedad de identidad y el DBPROP_COL_PRIMARYKEY dwStatus miembro se establece en DBPROPSTATUS_CONFLICTING.The column is defined with the SQL ServerSQL Server identity property and the DBPROP_COL_PRIMARYKEY dwStatus member is set to DBPROPSTATUS_CONFLICTING.

El SQL ServerSQL Server proveedor Native Client OLE DB devuelve un error cuando DBPROP_COL_PRIMARYKEY y DBPROP_COL_NULLABLE son VARIANT_TRUE.The SQL ServerSQL Server Native Client OLE DB provider returns an error when DBPROP_COL_PRIMARYKEY and DBPROP_COL_NULLABLE are both VARIANT_TRUE.

El SQL ServerSQL Server proveedor Native Client OLE DB devuelve un error de SQL ServerSQL Server cuando el consumidor intenta crear una restricción PRIMARY KEY en una columna de válido SQL ServerSQL Server tipo de datos.The SQL ServerSQL Server Native Client OLE DB provider returns an error from SQL ServerSQL Server when the consumer attempts to create a PRIMARY KEY constraint on a column of invalid SQL ServerSQL Server data type. Las restricciones PRIMARY KEY no pueden definirse en las columnas creadas con el SQL ServerSQL Server tipos de datos bits, texto, ntext, y imagen.PRIMARY KEY constraints cannot be defined on columns created with the SQL ServerSQL Server data types bit, text, ntext, and image.
DBPROP_COL_UNIQUEDBPROP_COL_UNIQUE L/E lectura/escrituraR/W: Read/write

Valor predeterminado: VARIANT_FALSE. Descripción: aplica una restricción UNIQUE de SQL ServerSQL Server a la columna.Default: VARIANT_FALSE Description: Applies a SQL ServerSQL Server UNIQUE constraint to the column.

Cuando se define como una propiedad de columna, la restricción solo se aplica en una columna única.When defined as a column property, the constraint is applied on a single column only. El consumidor puede utilizar IIndexDefinition:: CreateIndex para aplicar una restricción UNIQUE en los valores combinados de dos o más columnas.The consumer can use IIndexDefinition::CreateIndex to apply a UNIQUE constraint on the combined values of two or more columns.

El SQL ServerSQL Server proveedor OLE DB de Native Client devuelve DB_S_ERRORSOCCURRED cuando DBPROP_COL_PRIMARYKEY y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption no es DBPROPOPTIONS_REQUIRED.The SQL ServerSQL Server Native Client OLE DB provider returns DB_S_ERRORSOCCURRED when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption is not DBPROPOPTIONS_REQUIRED.

Se devuelve DB_E_ERRORSOCCURRED cuando DBPROP_COL_PRIMARYKEY y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption es igual a DBPROPOPTIONS_REQUIRED.DB_E_ERRORSOCCURRED is returned when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption equals DBPROPOPTIONS_REQUIRED. La columna se define con el SQL ServerSQL Server propiedad de identidad y el DBPROP_COL_PRIMARYKEY dwStatus miembro se establece en DBPROPSTATUS_CONFLICTING.The column is defined with the SQL ServerSQL Server identity property and the DBPROP_COL_PRIMARYKEY dwStatus member is set to DBPROPSTATUS_CONFLICTING.

El SQL ServerSQL Server proveedor OLE DB de Native Client devuelve DB_S_ERRORSOCCURRED cuando DBPROP_COL_NULLABLE y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption no es DBPROPOPTIONS_REQUIRED.The SQL ServerSQL Server Native Client OLE DB provider returns DB_S_ERRORSOCCURRED when DBPROP_COL_NULLABLE and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption is not DBPROPOPTIONS_REQUIRED.

Se devuelve DB_E_ERRORSOCCURRED cuando DBPROP_COL_NULLABLE y DBPROP_COL_UNIQUE son VARIANT_TRUE y dwOption es igual a DBPROPOPTIONS_REQUIRED.DB_E_ERRORSOCCURRED is returned when DBPROP_COL_NULLABLE and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption equals DBPROPOPTIONS_REQUIRED. La columna se define con el SQL ServerSQL Server propiedad de identidad y el DBPROP_COL_NULLABLE dwStatus miembro se establece en DBPROPSTATUS_CONFLICTING.The column is defined with the SQL ServerSQL Server identity property and the DBPROP_COL_NULLABLE dwStatus member is set to DBPROPSTATUS_CONFLICTING.

El SQL ServerSQL Server proveedor Native Client OLE DB devuelve un error de SQL ServerSQL Server cuando el consumidor intenta crear una restricción UNIQUE en una columna de válido SQL ServerSQL Server tipo de datos.The SQL ServerSQL Server Native Client OLE DB provider returns an error from SQL ServerSQL Server when the consumer attempts to create a UNIQUE constraint on a column of invalid SQL ServerSQL Server data type. No se puede definir restricciones UNIQUE en las columnas creadas con el SQL ServerSQL Server bits tipo de datos.UNIQUE constraints cannot be defined on columns created with the SQL ServerSQL Server bit data type.

Cuando el consumidor llama ITableDefinition:: CreateTable, el SQL ServerSQL Server proveedor OLE DB de Native Client interpreta las propiedades de la tabla como sigue.When the consumer calls ITableDefinition::CreateTable, the SQL ServerSQL Server Native Client OLE DB provider interprets table properties as follows.

Id. de propiedadProperty ID DescriptionDescription
DBPROP_TBL_TEMPTABLEDBPROP_TBL_TEMPTABLE L/E lectura/escrituraR/W: Read/write

Valor predeterminado: VARIANT_FALSE. Descripción: de forma predeterminada, la SQL ServerSQL Server proveedor OLE DB de Native Client crea tablas denominadas por el consumidor.Default: VARIANT_FALSE Description: By default, the SQL ServerSQL Server Native Client OLE DB provider creates tables named by the consumer. Cuando VARIANT_TRUE, la SQL ServerSQL Server proveedor OLE DB de Native Client genera un nombre de tabla temporal para el consumidor.When VARIANT_TRUE, The SQL ServerSQL Server Native Client OLE DB provider generates a temporary table name for the consumer. El consumidor establece el pTableID parámetro de CreateTable en NULL.The consumer sets the pTableID parameter of CreateTable to NULL. El ppTableID parámetro debe contener un puntero válido.The ppTableID parameter must contain a valid pointer.

Si el consumidor solicita que se abra un conjunto de filas en una tabla se creó correctamente, el SQL ServerSQL Server proveedor OLE DB de Native Client abre un conjunto de filas compatible con cursores.If the consumer requests that a rowset be opened on a successfully created table, the SQL ServerSQL Server Native Client OLE DB provider opens a cursor-supported rowset. Las propiedades del conjunto de filas se pueden indicar en los conjuntos de propiedades pasados.Any rowset properties can be indicated in the property sets passed.

En este ejemplo se crea una tabla de SQL ServerSQL Server.This example creates a SQL ServerSQL Server table.

// This CREATE TABLE statement shows the details of the table created by   
// the following example code.  
//  
// CREATE TABLE OrderDetails  
// (  
//    OrderID      int      NOT NULL  
//    ProductID   int      NOT NULL  
//    CONSTRAINT PK_OrderDetails  
//         PRIMARY KEY CLUSTERED (OrderID, ProductID),  
//    UnitPrice   money      NOT NULL,  
//    Quantity   int      NOT NULL,  
//    Discount   decimal(2,2)   NOT NULL  
//        DEFAULT 0  
// )  
//  
// The PRIMARY KEY constraint is created in an additional example.  
HRESULT CreateTable  
    (  
    ITableDefinition* pITableDefinition  
    )  
    {  
    DBID            dbidTable;  
    const ULONG     nCols = 5;  
    ULONG           nCol;  
    ULONG           nProp;  
    DBCOLUMNDESC    dbcoldesc[nCols];  

    HRESULT         hr;  

    // Set up column descriptions. First, set default property values for  
    //  the columns.  
    for (nCol = 0; nCol < nCols; nCol++)  
        {  
        dbcoldesc[nCol].pwszTypeName = NULL;  
        dbcoldesc[nCol].pTypeInfo = NULL;  
        dbcoldesc[nCol].rgPropertySets = new DBPROPSET;  
        dbcoldesc[nCol].pclsid = NULL;  
        dbcoldesc[nCol].cPropertySets = 1;  
        dbcoldesc[nCol].ulColumnSize = 0;  
        dbcoldesc[nCol].dbcid.eKind = DBKIND_NAME;  
        dbcoldesc[nCol].wType = DBTYPE_I4;  
        dbcoldesc[nCol].bPrecision = 0;  
        dbcoldesc[nCol].bScale = 0;  

        dbcoldesc[nCol].rgPropertySets[0].rgProperties =   
            new DBPROP[NCOLPROPS_MAX];  
        dbcoldesc[nCol].rgPropertySets[0].cProperties = NCOLPROPS_MAX;  
        dbcoldesc[nCol].rgPropertySets[0].guidPropertySet =  
            DBPROPSET_COLUMN;  

        for (nProp = 0; nProp < NCOLPROPS_MAX; nProp++)  
            {  
            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].  
                dwOptions = DBPROPOPTIONS_REQUIRED;  
            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].colid  
                 = DB_NULLID;  

            VariantInit(  
                &(dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].  
                    vValue));  

            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].  
                vValue.vt = VT_BOOL;  
            }  
        }  

    // Set the column-specific information.  
    dbcoldesc[0].dbcid.uName.pwszName = L"OrderID";  
    dbcoldesc[0].rgPropertySets[0].rgProperties[0].dwPropertyID =   
        DBPROP_COL_NULLABLE;  
    dbcoldesc[0].rgPropertySets[0].rgProperties[0].vValue.boolVal =   
        VARIANT_FALSE;  
    dbcoldesc[0].rgPropertySets[0].cProperties = 1;  

    dbcoldesc[1].dbcid.uName.pwszName = L"ProductID";  
    dbcoldesc[1].rgPropertySets[0].rgProperties[0].dwPropertyID =   
        DBPROP_COL_NULLABLE;  
    dbcoldesc[1].rgPropertySets[0].rgProperties[0].vValue.boolVal =   
        VARIANT_FALSE;  
    dbcoldesc[1].rgPropertySets[0].cProperties = 1;  

    dbcoldesc[2].dbcid.uName.pwszName = L"UnitPrice";  
    dbcoldesc[2].wType = DBTYPE_CY;  
    dbcoldesc[2].rgPropertySets[0].rgProperties[0].dwPropertyID =   
        DBPROP_COL_NULLABLE;  
    dbcoldesc[2].rgPropertySets[0].rgProperties[0].vValue.boolVal =   
        VARIANT_FALSE;  
    dbcoldesc[2].rgPropertySets[0].cProperties = 1;  

    dbcoldesc[3].dbcid.uName.pwszName = L"Quantity";  
    dbcoldesc[3].rgPropertySets[0].rgProperties[0].dwPropertyID =   
        DBPROP_COL_NULLABLE;  
    dbcoldesc[3].rgPropertySets[0].rgProperties[0].vValue.boolVal =   
        VARIANT_FALSE;  
    dbcoldesc[3].rgPropertySets[0].cProperties = 1;  

    dbcoldesc[4].dbcid.uName.pwszName = L"Discount";  
    dbcoldesc[4].wType = DBTYPE_NUMERIC;  
    dbcoldesc[4].bPrecision = 2;  
    dbcoldesc[4].bScale = 2;  
    dbcoldesc[4].rgPropertySets[0].rgProperties[0].dwPropertyID =   
        DBPROP_COL_NULLABLE;  
    dbcoldesc[4].rgPropertySets[0].rgProperties[0].vValue.boolVal =   
        VARIANT_FALSE;  
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].dwPropertyID =   
        DBPROP_COL_DEFAULT;  
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].vValue.vt = VT_BSTR;  
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].vValue.bstrVal =  
        SysAllocString(L"0");  
    dbcoldesc[4].rgPropertySets[0].cProperties = 2;  

    // Set up the dbid for OrderDetails.  
    dbidTable.eKind = DBKIND_NAME;  
    dbidTable.uName.pwszName = L"OrderDetails";  

    if (FAILED(hr = pITableDefinition->CreateTable(NULL, &dbidTable,  
        nCols, dbcoldesc, NULL, 0, NULL, NULL, NULL)))  
        {  
        DumpError(pITableDefinition, IID_ITableDefinition);  
        goto SAFE_EXIT;  
        }  

SAFE_EXIT:  
    // Clean up dynamic allocation in the property sets.  
    for (nCol = 0; nCol < nCols; nCol++)  
        {  
        for (nProp = 0; nProp < NCOLPROPS_MAX; nProp++)  
            {  
            if (dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].  
                vValue.vt == VT_BSTR)  
                {  
                SysFreeString(dbcoldesc[nCol].rgPropertySets[0].  
                    rgProperties[nProp].vValue.bstrVal);  
                }  
            }  

        delete [] dbcoldesc[nCol].rgPropertySets[0].rgProperties;  
        delete [] dbcoldesc[nCol].rgPropertySets;  
        }  

    return (hr);  
    }  

Vea tambiénSee Also

Tablas e índicesTables and Indexes