Creative Saplings

ACTUALIZAR

enero 29, 2021
No Comments

Propósito

Usar la instrucción UPDATE para cambiar los valores existentes en una tabla o en la tabla base de una vista o la tabla maestra de una vista materializada.

Temas adicionales

  • Requisitos previos

  • Sintaxis

  • Semántica

  • Ejemplos

Requisitos previos

Para para actualizar valores en una tabla, la tabla debe estar en su propio esquema o debe tener el privilegio de objeto UPDATE en la tabla.

Para que actualice valores en la tabla base de una vista:

  • Debe tener el privilegio de objeto UPDATE en la vista, y

  • Quien sea el propietario del esquema que contiene la vista debe tener el privilegio de objeto UPDATE en la tabla base.

El privilegio del sistema UPDATE ANY TABLE también le permite actualizar valores en cualquier mesa o en la mesa base de cualquier vista.

También debe tener el privilegio de objeto SELECT sobre el objeto que desea actualizar si:

  • El objeto está en una base de datos remota o

  • El parámetro de inicialización SQL92_SECURITY se establece en TRUE y la operación UPDATE hace referencia a columnas de la tabla, como las columnas en un where_clause.

Sintaxis

update :: =

Descripción de la ilustración update.gif

(DML_table_expression_clause :: =, update_set_clause :: =, where_clause :: =, return_clause :: =, error_logging_clause :: =)

DML_table_expression_clause :: =

Descripción de la ilustración DML_table_expression_clause.gif

(subconsulta :: = – parte de SELECT, subquery_restriction_clause :: =, table_collection_expression :: =)

subquery_restriction_clause :: =


Descripción de la ilustración subquery_restriction_clause.gif

table_collection_expression :: =


Descripción de la ilustración table_collection_expression.gif

update_set_clause :: =


Descripción de la ilustración update_set_clause. gif

where_clause :: =


Descripción de la ilustración where_clause.gif

return_clause :: =


Descripción de la ilustración return_clause.gif

error_logging_clause :: =

Descripción de la ilustración error_logging_clause.gif

Semántica

pista

Especifique un comentario que pasa instrucciones al optimizador sobre la elección de un plan de ejecución para la declaración.

Puede colocar una sugerencia paralela inmediatamente después de la palabra clave UPDATE para paralelizar tanto el bajo escaneo mentiroso y UPDATE operaciones.

Consulte también:

  • Guía de ajuste del rendimiento de la base de datos Oracle y » Uso de sugerencias «para la sintaxis y descripción de las sugerencias

  • Guía de ajuste del rendimiento de la base de datos Oracle y Conceptos de la base de datos Oracle para obtener información detallada sobre DML en paralelo

DML_table_expression_clause

La cláusula ONLY se aplica solo a las vistas. Especifique la sintaxis ONLY si la vista en la cláusula UPDATE es una vista que pertenece a una jerarquía y no desea actualizar filas de ninguna de sus subvistas.

Consulte también:

«Restricciones en la DML_table_expression_clause» y «Actualización de una tabla: ejemplos»

esquema

Especifique el esquema que contiene el objeto a actualizar. Si omite schema, entonces la base de datos asume que el objeto está en su propio esquema.

tabla | ver | vista_materializada | subconsulta

Especifique el nombre de la tabla, vista, vista materializada o las columnas devueltas por una subconsulta para actualizar. Al emitir una instrucción UPDATE contra una tabla, se activan los UPDATE asociados con la tabla.

  • Si especifica view, la base de datos actualiza la tabla base de la vista.No puede actualizar una vista excepto con INSTEAD OF activadores si la consulta de definición de la vista contiene una de las siguientes construcciones:

Un operador de conjunto Un operadorDISTINCTUna función agregada o analítica AGROUPBY,ORDERBY,MODEL,CONNECTBY, oSTARTWITHcláusula Una expresión de colección en unaSELECTlista Una subconsulta en unaSELECTlista Una subconsulta designadaWITH READ ONLYUniones, con algunas excepciones , como se documenta en la Guía del administrador de la base de datos Oracle

  • No puede actualizar más de una tabla base a través de una vista.

  • Además, si el La vista se creó con WITH CHECK , puede actualizar la vista solo si los datos resultantes satisfacen la consulta de definición de la vista.

  • Si table o la tabla base de view contiene una o más columnas de índice de dominio, entonces esta declaración ejecuta la rutina de actualización del tipo de índice correspondiente.

  • No puede actualizar filas en una vista materializada de solo lectura. Si actualiza filas en una vista materializada de escritura, la base de datos actualiza las filas de la tabla contenedora subyacente. Sin embargo, las actualizaciones se sobrescriben en la siguiente operación de actualización. Si actualiza filas en una vista materializada actualizable que es parte de un grupo de vistas materializadas, la base de datos también actualiza las filas correspondientes en la tabla maestra.

Consulte Además:

  • Guía del desarrollador de Oracle Data Cartridge para obtener más información sobre las rutinas de actualización del tipo de índice

  • CREAR VISTA MATERIALIZADA para obtener información sobre creando vistas materializadas actualizables

PARTICIÓN | SUBPARTICIÓN

Especifique el nombre de la partición o subpartición dentro de table destinado a las actualizaciones. No es necesario especificar el nombre de la partición al actualizar los valores en una tabla particionada. Sin embargo, en algunos casos, especificar el nombre de la partición puede ser más eficaz que un complicado where_clause .

Vea también:

«Referencia a tablas e índices particionados» y «Actualización de una partición: ejemplo»

dblink

Especifique un nombre completo o parcial de un enlace de base de datos a una base de datos remota donde t Se localiza el objeto. Puede usar un enlace de base de datos para actualizar un objeto remoto solo si está usando la funcionalidad distribuida de Oracle Database.

Si omite dblink,, entonces la base de datos asume que el objeto es en la base de datos local.

Consulte también:

«Cómo hacer referencia a objetos en bases de datos remotas» para obtener información sobre cómo hacer referencia a enlaces de bases de datos

subquery_restriction_clause

Utilice subquery_restriction_clause para restringir la subconsulta de una de las siguientes formas:

CON LECTURA SOLAMENTE Especifique WITH READ ONLY para indicar que la tabla o vista no se puede actualizar.

CON OPCIÓN DE COMPROBACIÓN Especifique WITH CHECK OPTION para indicar que Oracle Database prohíbe cualquier cambio en la tabla o vista que produciría filas que no están incluidas en la subconsulta. Cuando se usa en la subconsulta de una declaración DML, puede especificar esta cláusula en una subconsulta en la cláusula FROM pero no en la subconsulta en la WHERE cláusula.

Restricción CONSTRAINT Especifique el nombre de la restricción CHECK OPTION. Si omite este identificador, Oracle asigna automáticamente a la restricción un nombre de la forma SYS_C n, donde n es un número entero que hace que el nombre de restricción único dentro de la base de datos.

Consulte también:

«Uso de la cláusula WITH CHECK OPTION: Ejemplo»

table_collection_expression

El table_collection_expression le permite informar a Oracle que el valor de collection_expression debe tratarse como una tabla para fines de consultas y operaciones DML. collection_expression puede ser una subconsulta, una columna, una función o un constructor de colección. Independientemente de su forma, debe devolver un valor de colección, es decir, un valor cuyo tipo sea tabla anidada o varray. Este proceso de extraer los elementos de una colección se denomina desanidación de la colección.

El signo más (+) opcional es relevante si está uniendo la expresión TABLE con el padre mesa. El + crea una combinación externa de los dos, de modo que la consulta devuelve filas de la tabla externa incluso si la expresión de la colección es nula.

Nota:

En versiones anteriores de Oracle, cuando collection_expression era una subconsulta, table_collection_expression se expresaba como THE subquery.Ese uso ahora está desaprobado.

Puede usar un table_collection_expression para actualizar filas en una tabla según las filas de otra tabla. Por ejemplo, puede acumular cuatro tablas de ventas trimestrales en una tabla de ventas anual.

t_alias

Especifique un nombre de correlación (alias) para la tabla, vista o subconsulta a la que se hará referencia en otra parte de la declaración. Este alias es obligatorio si DML_table_expression_clause hace referencia a cualquier atributo de tipo de objeto o método de tipo de objeto.

Consulte también:

«Actualización correlacionada: ejemplo «

Restricciones sobre DML_table_expression_clause Esta cláusula está sujeta a las siguientes restricciones:

  • No puede ejecutar esta declaración si table o la tabla base de view contiene cualquier índice de dominio marcado como IN_PROGRESS o FAILED.

  • No puede insertar en una partición si alguna de las particiones de índice afectadas están marcadas como UNUSABLE.

  • No puede especificar order_by_clause en la subconsulta de DML_table_expression_clause.

  • Si especifica un índice, una partición de índice o una subpartición de índice que se ha marcado UNUSABLE, la instrucción UPDATE fallará a menos que la SKIP_UNUSABLE_INDEXES parámetro de sesión se ha establecido en TRUE.

Consulte también:

ALTER SESSION para obtener información sobre SKIP_UNUSABLE_INDEXES parámetro de sesión

update_set_clause

El update_set_clause le permite establecer valores de columna.

columna

Especifique el nombre de una columna del objeto que se va a actualizar. Si omite una columna de la tabla de update_set_clause, el valor de esa columna permanece sin cambios.

Si column se refiere a un atributo de objeto LOB, luego primero debe inicializarlo con un valor de vacío o nulo. No puede actualizarlo con un literal. Además, si está actualizando un valor LOB utilizando algún método que no sea una instrucción SQL UPDATE directa, primero debe bloquear la fila que contiene el LOB. Consulte for_update_clause para obtener más información.

Si column es parte de la clave de partición de una tabla particionada, entonces UPDATE fallará si cambia un valor en la columna que movería la fila a una partición o subpartición diferente, a menos que habilite el movimiento de filas. Consulte el row_movement_clause de CREATE TABLE o ALTER TABLE.

Además, si column es parte del clave de partición de una tabla particionada por lista, entonces UPDATE fallará si especifica un valor para la columna que no existe ya en el partition_value lista de una de las particiones.

subconsulta

Especifique una subconsulta que devuelva exactamente una fila por cada fila actualizada.

  • Si especifique solo una columna en update_set_clause, entonces la subconsulta puede devolver solo un valor.

  • Si especifica varias columnas en el update_set_clause, entonces la subconsulta debe devolver tantos valores como columnas especificadas.

  • Si la subconsulta no devuelve filas, entonces el se asigna un valor nulo a la columna.

  • Si esta subquery se refiere a objetos remotos, entonces UPDATE la operación puede ejecutarse en paralelo siempre que la referencia ce no vuelve a un objeto en la base de datos local. Sin embargo, si subquery en DML_table_expression_clause se refiere a cualquier objeto remoto, entonces UPDATE la operación se ejecutará en serie sin notificación.

Puede usar flashback_query_clause dentro de la subconsulta para actualizar table con datos anteriores. Consulte la cláusula flashback_query_clause de SELECT para obtener más información sobre esta cláusula.

Consulte también:

  • SELECT y «Uso de subconsultas»

  • Parallel_clause en la documentación CREATE TABLE

expr

Especifique una expresión que resuelva el nuevo valor asignado a la columna correspondiente.

Consulte también:

Capítulo 6, «Expresiones» para la sintaxis de expr y «Actualización de una tabla de objetos: ejemplo»

DEFAULT Especifique DEFAULT para establecer la columna en el valor especificado previamente como predeterminado valor de la columna. Si no se ha especificado ningún valor predeterminado para la columna correspondiente, la base de datos establece la columna en nula.

Restricción para actualizar los valores predeterminados No puede especificar DEFAULT si está actualizando una vista.

Cláusula VALUE

La cláusula VALUE le permite especificar la fila completa de una tabla de objetos.

Restricción en la cláusula VALUE Puede especificar esta cláusula solo para una tabla de objetos.

Nota:

Si inserta cadenas literales en una RAW columna, durante las consultas posteriores, Oracle Database realizará un análisis completo de la tabla en lugar de usar cualquier índice que pueda existir en la columna RAW.

Consulte también:

«Actualización de una tabla de objetos: ejemplo»

where_clause

La where_clause le permite restringir las filas actualizadas a aquellas para las que el condition es cierto. Si omite esta cláusula, la base de datos actualiza todas las filas de la tabla o vista. Consulte el Capítulo 7, «Condiciones» para conocer la sintaxis de condition.

El where_clause determina las filas en qué valores se actualizan. Si no especifica where_clause, se actualizan todas las filas. Para cada fila que cumple con where_clause, las columnas a la izquierda del operador de igualdad (=) en update_set_clause se establecen en los valores de las expresiones correspondientes a la derecha del operador. Las expresiones se evalúan a medida que se actualiza la fila.

return_clause

La cláusula return recupera las filas afectadas por una declaración DML. Puede especificar esta cláusula para tablas y vistas materializadas y para vistas con una sola tabla base.

Cuando se opera en una sola fila, una declaración DML con un returning_clause puede recuperar expresiones de columna usando la fila afectada, el identificador de fila y REFs en la fila afectada y almacenarlas en variables del lenguaje principal o variables PL / SQL.

Al operar en varias filas, una declaración DML con returning_clause almacena valores de expresiones, filas y REFs que involucran las filas afectadas en matrices de enlace.

expr Cada elemento de la lista expr debe tener una sintaxis de expresión válida.

EN EL INTO indica que los valores de las filas modificadas se almacenarán en las variables especificadas en la lista data_item.

data_item Cada data_item es una variable del lenguaje principal o PL / SQL que almacena el valor expr recuperado.

Para cada expresión de la lista RETURNING, debe especificar una variable de lenguaje principal o PL / SQL compatible con el tipo correspondiente en el INTO lista.

Restricciones Las siguientes restricciones se aplican a la RETURNING cláusula:

  • La expr está restringido de la siguiente manera:

    • Para UPDATE y DELETE declaraciones cada expr debe ser una expresión simple o una expresión de función agregada de un solo conjunto. No puede combinar expresiones simples y expresiones de función agregada de un solo conjunto en el mismo returning_clause. Para INSERT declaraciones, cada expr debe ser una expresión simple. Las funciones agregadas no se admiten en una INSERT declaración RETURNING cláusula.

    • Single- establecer expresiones de función agregada no puede incluir la DISTINCT palabra clave.

  • Si el contiene una columna de clave principal u otra columna NOT NULL, entonces la declaración de actualización falla si la tabla tiene un BEFORE UPDATE definido en él.

  • No puede especificar el returning_clause para una inserción de varias tablas.

  • No puede usar esta cláusula con DML paralelo o con objetos remotos.

  • No puede recuperar LONG tipos con esta cláusula.

  • No puede especificar esta cláusula para una vista en la que se ha definido un INSTEAD OF activador.

Consulte también :

Usuario PL / SQL » s Guía y referencia para obtener información sobre el uso de la cláusula BULK COLLECT para devolver varios valores a las variables de colección

error_logging_clause

El error_logging_clause tiene el mismo comportamiento en una instrucción UPDATE que en una instrucción INSERT. Consulte la INSERT declaración error_logging_clause para obtener más información.

Vea también:

«Inserción en una tabla con registro de errores: ejemplo»

Ejemplos

Actualización de una tabla: ejemplos Lo siguiente La declaración otorga comisiones nulas a todos los empleados con el trabajo SH_CLERK:

UPDATE employees SET commission_pct = NULL WHERE job_id = "SH_CLERK";

La siguiente declaración promueve a Douglas Grant a gerente del Departamento 20 con un aumento de $ 1,000:

UPDATE employees SET job_id = "SA_MAN", salary = salary + 1000, department_id = 120 WHERE first_name||" "||last_name = "Douglas Grant"; 

La siguiente declaración aumenta el salario de un empleado en el employees tabla en la remote base de datos:

UPDATE employees@remote SET salary = salary*1.1 WHERE last_name = "Baer";

El siguiente ejemplo muestra las siguientes construcciones sintácticas de UPDATE declaración:

  • Ambas formas de update_set_clause juntas en una sola declaración

  • Una subconsulta correlacionada

  • Una where_clause para limitar las filas actualizadas

La sentencia UPDATE anterior realiza las siguientes operaciones:

  • Actualiza solo a los empleados que trabajan en Ginebra o Múnich (ubicaciones 2900 y 2700)

  • Conjuntos department_id para estos empleados a department_id correspondiente a Bombay (location_id 2100)

  • Establece el salario de cada empleado en 1,1 veces el salario promedio de su departamento

  • Establece la comisión de cada empleado en 1,5 veces la comisión promedio de su departamento

Actualización de una partición: ejemplo El siguiente ejemplo actualiza los valores en una sola partición de la sales tabla:

UPDATE sales PARTITION (sales_q1_1999) s SET s.promo_id = 494 WHERE amount_sold > 1000;

Actualización de una tabla de objetos: ejemplo La siguiente declaración crea dos tablas de objetos, people_demo1 y people_demo2 , del objeto people_typ creado en Colecciones de tablas: Ejemplos. El ejemplo muestra cómo actualizar una fila de people_demo1 seleccionando una fila de people_demo2:

El ejemplo usa el VALUE función de referencia de objeto tanto en la cláusula SET como en la subconsulta.

Actualización correlacionada: Ejemplo Para un ejemplo que utiliza una subconsulta correlacionada para actualizar filas de tablas anidadas, consulte «Colecciones de tablas: ejemplos».

Uso de la cláusula RETURNING durante la ACTUALIZACIÓN: ejemplo El siguiente ejemplo devuelve valores de la fila actualizada y almacena el resultado en PL / Variables SQL bnd1, bnd2, bnd3:

El El siguiente ejemplo muestra que puede especificar una función agregada de un solo conjunto en la expresión de la cláusula de devolución:

UPDATE employees SET salary = salary * 1.1 WHERE department_id = 100 RETURNING SUM(salary) INTO :bnd1;

Articles
Previous Post

Compre en tiendas en línea de EE. UU. Y enviamos a India en 2-4 días.

Next Post

Razas de perros azules: ¿qué las hace tan hermosas?

Deja una respuesta Cancelar la respuesta

Entradas recientes

  • Las mejores escuelas de fotografía del mundo, 2020
  • Los ciudadanos soberanos llevan su filosofía antigubernamental a las carreteras
  • Guía de costos de reparación de estuco
  • Muckrakers (Español)
  • Precision Oncology (Español)

Archivos

  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.