hay situaciones en las que tienes que actualizar el valor del campo de una tabla, con el valor de una consulta (mediante una relación 1 a 1).
La primera manera es:
UPDATE tablaA set
campoA1 = (
select distinct campoB1
from tablaB
where tablaB.campoBi = tablaA.campoAi
)
...
una forma eficiente más eficiente es la siguiente:
UPDATE (
SELECT
tablaA.campoA1,
tablaB.campoB1
FROM tablaA
INNER JOIN tablaB on tablaB.campoBi = tablaA.campoAi)
)
SET campoA1 = campoB1;
Para que esta segunda opción funcione necesitamos tener UNIQUE or PRIMARY KEY constraint en la relación entre tablas.
Si no tienes esta constraint, puedes utilizar el hint /*+BYPASS_UJVC*/ después de la palabra UPDATE
(bypass update join view constraint).
viernes, 21 de enero de 2011
Vistas de ORACLE
//listado del diccionario de datos
select * from dictionary
//tablas de un esquema
select * from user_tables
//todos los objetos de un esquema
select * from user_catalog
//productos ORACLE instalados
select * from product_component_version
//listado de constraint con columnas
select * from sys.all_cons_columns
//listado de todos los sinonimos
SELECT * from sys.all_synonyms
//listado de usuarios
Select * FROM dba_users
//listado de los argumentos de las funciones/procedimientos de PL/SQL
SELECT * FROM all_arguments
select * from dictionary
//tablas de un esquema
select * from user_tables
//todos los objetos de un esquema
select * from user_catalog
//productos ORACLE instalados
select * from product_component_version
//listado de constraint con columnas
select * from sys.all_cons_columns
//listado de todos los sinonimos
SELECT * from sys.all_synonyms
//listado de usuarios
Select * FROM dba_users
//listado de los argumentos de las funciones/procedimientos de PL/SQL
SELECT * FROM all_arguments
Suscribirse a:
Entradas (Atom)