Mám jednu tabulku A, která má sloupec (id, pole_1, pole_2), a druhou tabulku B, která obsahuje sloupec (id, pole_2)
Nyní chci sloučit tabulku B do A, to znamená, že chci aktualizovat pole_2 v tabulce A na hodnotu tabulky B. Jak tedy implementovat? BTW Používám Oracle
Dík
Alternativním přístupem k souvisejícímu poddotazu (navrženému Kerri) by bylo použití příkazu MERGE, který možná bude účinnější než podvýběr (což lze ověřit pouze při pohledu na plán provedení obě prohlášení).
MERGE INTO table_b
USING
(
SELECT id,
field_2
FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE
SET table_b.field_2 = ta.field_2
Ne přesně jistý, co děláte po tomto, ale mělo by to fungovat jako jednorázové nebo kontinuální prostřednictvím naplánované úlohy:
UPDATE table_a a
SET field_2 = ( SELECT field_2
FROM table_b b
WHERE b.id = a.id )
;
Nyní pokaždé, když se provede výše uvedené, provede to ve všech řádcích v tabulce. Pokud je to něco, co musíte neustále dělat, navrhl bych něco jiného, ale u jednorázových nebo velmi malých stolů by to mělo stačit.
Udělal jsem to úspěšně pomocí jedné tabulky v user1 z jiné tabulky v user2:
update user1.table1 a
set a.field1 = (
select b.field1
from user2.table2 b
where a.field1=b.field1
)
where <condition for update user1.table1>
Mohli byste vytvořit spouštěč v tabulce B, který aktualizuje tabulku A pokaždé, když se aktualizuje pole_2 v tabulce B. Další informace o vytváření spouštěčů naleznete zde - http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ