- WITH <common_table_expression>
Especifica el conjunto de resultados con nombre temporal, denominado también expresión de tabla común, definido en el ámbito de la instrucción INSERT. El conjunto de resultados se deriva de una instrucción SELECT. Para obtener más información, vea WITH common_table_expression (Transact-SQL).
- TOP (expression) [ PERCENT ]
Especifica el número o el porcentaje de filas aleatorias que se van a insertar. expression puede ser un número o un porcentaje de las filas. Para obtener más información, vea TOP (Transact-SQL).
- INTO
Es una palabra clave opcional que se puede utilizar entre INSERT y la tabla de destino.
- server_name
Es el nombre del servidor vinculado en el que se encuentra la tabla o la vista. server_name puede especificarse como un nombre de servidor vinculado o usando la función OPENDATASOURCE.
Cuando server_name se especifica como un servidor vinculado, se requieren database_name y schema_name. Cuando server_name se especifica con OPENDATASOURCE, database_name y schema_name pueden no aplicarse a todos los orígenes de datos y estar sujetos a las capacidades del proveedor OLE DB que tiene acceso al objeto remoto.
- database_name
Es el nombre de la base de datos.
- schema_name
Es el nombre del esquema al que pertenece la tabla o la vista.
- table_or view_name
Es el nombre de la tabla o la vista que va a recibir los datos.
Se puede utilizar una variable de tabla, en su ámbito, como origen de tabla en una instrucción INSERT.
La vista a la que hace referencia table_or_view_name debe poder actualizarse y debe hacer referencia exactamente a una tabla base en la cláusula FROM de la vista. Por ejemplo, la instrucción INSERT de una vista de varias tablas debe utilizar una column_list que solamente haga referencia a columnas de una tabla base. Para obtener más información acerca de las vistas que se pueden actualizar, vea CREATE VIEW (Transact-SQL).
- rowset_function_limited
Especifica la función OPENQUERY u OPENROWSET. El uso de estas funciones está sujeto a las capacidades del proveedor OLE DB que tiene acceso al objeto remoto.
- WITH ( <table_hint_limited> [... n ] )
Especifica una o varias sugerencias de tabla que están permitidas en una tabla de destino. La palabra clave WITH y los paréntesis son obligatorios.
No se permiten READPAST, NOLOCK ni READUNCOMMITTED. Para obtener más información acerca de las sugerencias de tabla, vea Sugerencias de tabla (Transact-SQL).
Importante |
|---|
La posibilidad de especificar las sugerencias HOLDLOCK, SERIALIZABLE, READCOMMITTED, REPEATABLEREAD o UPDLOCK en tablas que son destinos de instrucciones INSERT se quitará en una versión futura de SQL Server. Estas sugerencias no influyen en el rendimiento de las instrucciones INSERT. Evite el uso de dichas sugerencias en los nuevos trabajos de desarrollo y piense en modificar las aplicaciones que las utilizan actualmente. |
Especificar la sugerencia TABLOCK en una tabla que es el destino de una instrucción INSERT tiene el mismo efecto que especificar la sugerencia TABLOCKX. Se realiza un bloqueo exclusivo en la tabla.
- (column_list)
Es una lista de una o más columnas donde se van a insertar los datos. column_list se debe incluir entre paréntesis y delimitar con comas.
Si la columna no se incluye en column_list, Motor de base de datos debe ser capaz de proporcionar un valor basado en la definición de la columna; de lo contrario, no se puede cargar la fila. Motor de base de datos proporciona automáticamente un valor para la columna si esta:
Tiene una propiedad IDENTITY. Se usa el valor de identidad incremental siguiente.
Tiene un valor predeterminado. Se usa el valor predeterminado de la columna.
Tiene un tipo de datos timestamp. Se utiliza el valor actual de marca de tiempo.
Admite valores NULL. Se usa un valor NULL.
Es una columna calculada. Se utiliza el valor calculado.
Se debe usar column_list al insertar valores explícitos en una columna de identidad. La opción SET IDENTITY_INSERT debe ser ON para la tabla.
- Cláusula OUTPUT
Devuelve las filas insertadas como parte de la operación de inserción. Los resultados se pueden devolver a la aplicación de procesamiento o insertarse en una tabla o variable de tabla para su nuevo procesamiento.
La cláusula OUTPUT no se admite en las instrucciones DML que hacen referencia a vistas locales con particiones, vistas distribuidas con particiones, tablas remotas o instrucciones INSERT que contengan una execute_statement. La cláusula OUTPUT INTO no se admite en instrucciones INSERT que contengan una cláusula <dml_table_source>.
- VALUES
Presenta la lista o listas de valores de datos que se van a insertar. Debe haber un valor de datos por cada columna en column_list, si se especifica, o en la tabla. La lista de valores debe ir entre paréntesis.
Si los valores de la lista Value no están en el mismo orden que las columnas de la tabla o no contienen un valor para cada columna de la tabla, se debe usar column_list para especificar de forma explícita la columna que almacenará cada valor de entrada.
Puede utilizar el constructor de filas de Transact-SQL (que también se denomina constructor con valores de tabla) para especificar varias filas en una única instrucción INSERT. El constructor de filas se compone de una única cláusula VALUES con varias listas de valores escritos entre paréntesis y separados por una coma. Para obtener más información, vea Constructor con valores de tabla (Transact-SQL).
- DEFAULT
Hace que Motor de base de datos cargue el valor predeterminado definido para una columna. Si no existe ningún valor predeterminado para la columna y esta admite valores NULL, se inserta NULL. Para una columna definida con el tipo de datos timestamp, se inserta el siguiente valor de marca de tiempo. DEFAULT no es un valor válido para una columna de identidad.
- expression
Es una constante, variable o expresión. La expresión no puede contener una instrucción EXECUTE.
Cuando se hace referencia a los tipos de datos de caracteres Unicode nchar, nvarchar y ntext, debe agregarse como prefijo la letra mayúscula 'N' a 'expression'. Si no se especifica 'N', SQL Server convierte la cadena en la página de códigos correspondiente a la intercalación predeterminada de la base de datos o la columna. Los caracteres que no se encuentren en esta página de códigos se perderán.
- derived_table
Es cualquier instrucción SELECT válida que devuelva filas con los datos que se van a cargar en la tabla. La instrucción SELECT no puede contener una expresión de tabla común (CTE).
- execute_statement
Es cualquier instrucción EXECUTE válida que devuelva datos con instrucciones SELECT o READTEXT. Para obtener más información, vea EXECUTE (Transact-SQL).
Las opciones de RESULT SETS de la instrucción EXECUTE no se pueden especificar en una instrucción INSERT…EXEC.
Si se usa execute_statement con INSERT, cada conjunto de resultados debe ser compatible con las columnas de la tabla o de column_list.
execute_statement se puede utilizar para ejecutar procedimientos almacenados en el mismo servidor o en un servidor remoto. Se ejecuta el procedimiento en el servidor remoto, se devuelven los conjuntos de resultados al servidor local y se cargan en la tabla del servidor local. En una transacción distribuida, execute_statement no se puede emitir en un servidor vinculado de bucle invertido cuando la conexión tiene varios conjuntos de resultados activos múltiples (MARS) habilitados.
If execute_statement devuelve datos con la instrucción READTEXT, cada instrucción READTEXT puede devolver un máximo de 1 MB (1024 KB) de datos. execute_statement también se puede usar con procedimientos extendidos. execute_statement inserta los datos devueltos por el subproceso principal del procedimiento extendido; no obstante, los resultados de los subprocesos distintos del subproceso principal no se insertan.
No puede especificar un parámetro con valores de tabla como el destino de una instrucción INSERT EXEC; sin embargo, se puede especificar como un origen en la cadena o procedimiento almacenado INSERT EXEC. Para obtener más información, vea Usar parámetros con valores de tabla (motor de base de datos).
- <dml_table_source>
Especifica que las filas insertadas en la tabla de destino son las que ha devuelto la cláusula OUTPUT de una instrucción INSERT, UPDATE, DELETE o MERGE, filtradas opcionalmente por una cláusula WHERE. Si se especifica <dml_table_source>, el destino de la instrucción INSERT externa debe cumplir las restricciones siguientes:
Debe ser una tabla base, no una vista.
No puede ser una tabla remota.
No puede tener definido ningún desencadenador.
No puede participar en ninguna relación clave principal-clave externa.
No puede participar en la replicación de mezcla ni en las suscripciones actualizables para la replicación transaccional.
El nivel de compatibilidad de la base de datos debe estar establecido en 100 o superior. Para obtener más información, vea OUTPUT (cláusula de Transact-SQL).
- <select_list>
Es una lista separada por comas que especifica las columnas devueltas por la cláusula OUTPUT que se tienen que insertar. Las columnas de <select_list> deben ser compatibles con las columnas en las que se insertan los valores. <select_list> no puede hacer referencia a funciones de agregado ni a TEXTPTR.
Nota |
|---|
Las variables enumeradas en la lista SELECT hacen referencia a sus valores originales, sin tener en cuenta los cambios realizados en ellos en <dml_statement_with_output_clause>. |
- <dml_statement_with_output_clause>
Es una instrucción INSERT, UPDATE, DELETE o MERGE válida que devuelve las filas afectadas en una cláusula OUTPUT. La instrucción no puede contener una cláusula WITH y no puede tener como destino tablas remotas o vistas con particiones. Si se especifica UPDATE o DELETE, no puede ser una instrucción UPDATE o DELETE basada en cursores. No se puede hacer referencia a las filas de origen como instrucciones DML anidadas.
- WHERE <search_condition>
Es cualquier cláusula WHERE que contiene una condición <search_condition> válida que filtra las filas devueltas por <dml_statement_with_output_clause>. Para obtener más información, vea Condiciones de búsqueda (Transact-SQL). Cuando se utiliza en este contexto, <search_condition> no puede contener subconsultas, funciones escalares definidas por el usuario que realicen acceso a datos, funciones de agregado, TEXTPTR ni predicados de búsqueda de texto completo.
- DEFAULT VALUES
Hace que la nueva fila contenga los valores predeterminados definidos para cada columna.
- BULK
La usan las herramientas externas para cargar un flujo de datos binarios. Esta opción no está diseñada para usarse con herramientas tales como SQL Server Management Studio, SQLCMD, OSQL ni interfaces de programación de aplicaciones de acceso a datos como SQL Server Native Client.
- FIRE_TRIGGERS
Especifica que se ejecutarán todos los desencadenadores de inserción definidos en la tabla de destino durante la operación de carga de flujos de datos binarios. Para obtener más información, vea BULK INSERT (Transact-SQL).
- CHECK_CONSTRAINTS
Especifica que deben comprobarse todas las restricciones de la tabla o vista de destino durante la operación de carga de flujos de datos binarios. Para obtener más información, vea BULK INSERT (Transact-SQL).
- KEEPNULLS
Especifica que las columnas vacías deben conservar un valor nulo durante la operación de carga de flujos de datos binarios. Para obtener más información, vea Mantener valores NULL o UseDefault durante la importación masiva (SQL Server).
- KILOBYTES_PER_BATCH = kilobytes_per_batch
Especifica el número aproximado de kilobytes (KB) de datos por lote como kilobytes_per_batch. Para obtener más información, vea BULK INSERT (Transact-SQL).
- ROWS_PER_BATCH =rows_per_batch
Indica el número aproximado de filas de datos del flujo de datos binarios. Para obtener más información, vea BULK INSERT (Transact-SQL).
Nota Se produce un error de sintaxis si no se proporciona una lista de columnas.