Diseñar e implementar vistas

Actualizado: 14 de abril de 2006

Antes de crear una vista, considere las siguientes indicaciones:

  • Sólo puede crear vistas en la base de datos actual. Sin embargo, las tablas y las vistas a las que se haga referencia desde la nueva vista pueden encontrarse en otras bases de datos e, incluso, en otros servidores, si la vista se define mediante consultas distribuidas.
  • Los nombres de las vistas deben seguir las reglas que se aplican a los identificadores y ser únicos para cada esquema. Además, el nombre debe ser distinto del de las tablas incluidas en ese esquema.
  • Se pueden generar vistas dentro de otras vistas. Microsoft SQL Server 2005 permite anidar vistas. El anidamiento no debe superar los 32 niveles. Es posible que el límite real del anidamiento de vistas sea inferior en función de la complejidad de la vista y de la memoria disponible.
  • No puede asociar con las vistas reglas ni definiciones DEFAULT.
  • Los desencadenadores AFTER no se pueden asociar con las vistas; sólo se pueden asociar los desencadenadores INSTEAD OF.
  • La consulta que define la vista no puede incluir las cláusulas COMPUTE ni COMPUTE BY, y tampoco puede incluir la palabra clave INTO.
  • La consulta que define la vista no puede incluir la cláusula ORDER BY, a menos que también haya una cláusula TOP en la lista de selección de la instrucción SELECT.
  • La consulta que define la vista no puede incluir la cláusula OPTION que especifica una sugerencia de consulta.
  • La consulta que define la vista no puede incluir la cláusula TABLESAMPLE.
  • No se pueden definir definiciones de índice de texto completo en las vistas.
  • No se pueden crear vistas temporales, ni vistas dentro de tablas temporales.
  • Las vistas, las tablas o las funciones que participan en una vista creada con la cláusula SCHEMABINDING no se pueden quitar, a menos que se quite o cambie esa vista de forma que deje de tener un enlace de esquema. Además, las instrucciones ALTER TABLE sobre tablas que participan en vistas que tienen enlaces de esquemas provocarán un error si estas instrucciones afectan a la definición de la vista.
  • Si una vista no se crea con la cláusula SCHEMABINDING, debe ejecutarse sp_refreshview cuando se realicen cambios en los objetos subyacentes de la vista que afecten a la definición de ésta. De lo contrario, la vista puede generar resultados inesperados cuando se realiza una consulta.
  • No puede emitir consultas de texto completo en una vista, aunque una definición de vista puede incluir una consulta de texto completo si ésta hace referencia a una tabla configurada para la indización de texto completo.
  • Debe especificar el nombre de todas las columnas de la vista en el caso de que:
    • Alguna de las columnas de la vista derive de una expresión aritmética, una función integrada o una constante.

    • Dos o más columnas de la vista tuviesen, en caso contrario, el mismo nombre (normalmente, debido a que la definición de la vista incluye una combinación y las columnas de dos o más tablas diferentes tienen el mismo nombre).

    • Desee darle a una columna de la vista un nombre distinto del de la columna de la que deriva. (También puede cambiar el nombre de las columnas en la vista). Una columna de una vista hereda los tipos de datos de la columna de la que deriva, aunque no cambie su nombre.

      [!NOTA] Esta regla no se aplica cuando una vista se basa en una consulta que contiene una combinación externa, ya que las columnas pueden cambiar al pasar de no permitir valores NULL a permitirlos.

      De lo contrario, no necesitará especificar nombres de columnas cuando cree la vista. SQL Server asigna a las columnas de la vista los mismos nombres y tipos de datos de las columnas a las que se hace referencia en la consulta que define la vista. La lista de selección puede ser una enumeración completa o parcial de los nombres de las columnas de las tablas base.

Para crear una vista, debe contar con el permiso del propietario de la base de datos y, si la vista se crea con la cláusula SCHEMABINDING, debe contar también con los permisos correspondientes para las tablas o las vistas a las que se haga referencia en la definición de la vista.

De forma predeterminada, a medida que se agregan o se actualizan filas mediante una vista, éstas desaparecen del ámbito de la vista cuando dejan de cumplir los criterios de la consulta que define la vista. Por ejemplo, se puede crear una consulta que defina una vista cuya misión sea recuperar todas las filas de una tabla en las que el salario del empleado no supere los 30.000 dólares. Si el salario del empleado asciende a 32.000 dólares, la consulta de la vista ya no mostrará la fila correspondiente a ese empleado, ya que su salario no cumple el criterio especificado por la vista. No obstante, la cláusula WITH CHECK OPTION exige que todas las instrucciones de modificación de datos ejecutadas en la vista se ajusten a los criterios especificados en la instrucción SELECT que define la vista. Si utiliza esta cláusula, no podrá modificar las filas de forma que desaparezcan de la vista. Cualquier modificación que provoque esto, se anula y aparece un error.

Para crear una vista

Vea también

Conceptos

Diseñar vistas indizadas
Crear vistas con particiones
Modificar datos mediante una vista
Resolución de vistas

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial
Contenido modificado
  • Se quitó un párrafo sobre cómo cifrar información confidencial. Para obtener más información, vea CREATE VIEW (Transact-SQL).

14 de abril de 2006

Contenido nuevo:
  • Se agregó información acerca de la necesidad de ejecutar sp_refreshview en las vistas que no se creen con la cláusula SCHEMABINDING.