Share via


Modificar datos en vistas con particiones

Si una vista con particiones no se puede actualizar, sólo se puede utilizar como copia de sólo lectura de la tabla original. Una vista con particiones actualizable puede tener todas las funciones de la tabla original.

Una vista se considera una vista con particiones actualizable si es un conjunto de instrucciones SELECT cuyos conjuntos de resultados individuales se combinan en uno solo mediante la instrucción UNION ALL. Cada instrucción SELECT hace referencia a una tabla base de SQL Server. La tabla puede ser una tabla local o una tabla vinculada a la que se hace referencia utilizando un nombre de cuatro partes o mediante la función OPENDATASOURCE (no se puede utilizar una función OPENDATASOURCE u OPENROWSET que especifique una consulta de paso a través).

Además, las instrucciones de modificación de datos que hacen referencia a la vista deben seguir las reglas definidas para las instrucciones INSERT, UPDATE y DELETE.

Nota

La importación masiva de datos a una vista con particiones no es compatible con el comando bcp ni con las instrucciones BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...). Sin embargo, puede insertar varias filas en una vista con particiones mediante una instrucción INSERT.

Si la vista con particiones está distribuida entre servidores, evite utilizar desencadenadores o acciones en cascada en las tablas base. El desencadenador o acción en cascada puede realizar cambios en los datos subyacentes que pueden afectar a la definición de la vista.

Las vistas distribuidas con particiones sólo se pueden actualizar si el usuario tiene permisos CONTROL, ALTER, TAKE OWNERSHIP o VIEW DEFINITION en cada tabla subyacente de la vista. Para obtener más información, vea Solucionar problemas de visibilidad de los metadatos en vistas distribuidas con particiones.

Nota

Los datos sólo se pueden modificar mediante una vista distribuida con particiones si se instala SQL Server 2008 Enterprise o SQL Server 2008 Developer. Sin embargo, se pueden modificar datos mediante una vista local con particiones en cualquier edición de SQL Server 2008.

Instrucciones INSERT

Las instrucciones INSERT agregan datos a las tablas miembro mediante la vista con particiones. Las instrucciones INSERT deben seguir estas reglas:

  • Se deben incluir todas las columnas en la instrucción INSERT, incluso si la columna puede ser NULL en la tabla base o si tiene una restricción DEFAULT en la tabla base.

  • La palabra clave DEFAULT no se puede especificar en la cláusula VALUES de la instrucción INSERT.

  • Las instrucciones INSERT deben suministrar un valor que cumpla la lógica de la restricción CHECK definida en la columna de partición de una de las tablas miembro.

  • No se permiten instrucciones INSERT si una tabla miembro contiene una columna con una propiedad de identidad.

  • No se permiten instrucciones INSERT si una tabla miembro contiene una columna timestamp.

  • No se permiten instrucciones INSERT si hay una autocombinación con la misma vista o cualquiera de las tablas miembro.

Instrucciones UPDATE

Las instrucciones UPDATE modifican los datos de una o varias tablas miembro mediante la vista con particiones. Las instrucciones UPDATE deben seguir estas reglas:

  • Las instrucciones UPDATE no pueden especificar como valor la palabra clave DEFAULT, aunque la columna tenga definido un valor DEFAULT en la tabla miembro correspondiente.

  • No se puede cambiar el valor de una columna con una propiedad de identidad: sin embargo, las demás columnas sí pueden actualizarse.

  • No se puede cambiar el valor de PRIMARY KEY si la columna contiene datos text, image o ntext.

  • Si una tabla base contiene una columna timestamp, no se permiten actualizaciones.

  • No se permiten actualizaciones si hay una autocombinación con la misma vista o cualquiera de las tablas miembro.

Instrucciones DELETE

Las instrucciones DELETE quitan los datos de una o varias tablas miembro mediante la vista con particiones. No se permiten instrucciones DELETE si hay una autocombinación con la misma vista o cualquiera de las tablas miembro.