Mam jedną tabelę A ma kolumnę (id, field_1, field_2), a drugą tabelę B ma kolumnę (id, field_2)
Teraz chcę scalić tabelę B z A, co oznacza, że chcę zaktualizować pole_2 w tabeli A do wartości z tabeli B. Więc jak to zaimplementować? BTW używam Oracle
Dzięki
Odpowiedzi:
Alternatywnym podejściem do powiązanych ze sobą podkwerend (sugerowanych przez Kerri) byłoby użycie instrukcji MERGE, która może być bardziej wydajna niż podselekcja (którą można zweryfikować tylko patrząc na plan wykonania obu instrukcji).
źródło
MERGE
instrukcji jest to, że nie można zaktualizować kolumny, do której jest przyłączona, tj. Nie można zaktualizować kolumny użytej wON
klauzuli.ORA-01555: snapshot too old
Nie jestem do końca pewien, o co ci chodzi, ale powinno to działać jako jednorazowe lub ciągłe poprzez zaplanowane zadanie:
Teraz, za każdym razem, gdy powyższe zostanie wykonane, zrobi to we wszystkich wierszach w tabeli. Jeśli jest to coś, co musisz cały czas robić, proponuję coś innego, ale w przypadku jednorazowych lub bardzo małych stolików powinno wystarczyć.
źródło
Zrobiłem to pomyślnie, używając jednej tabeli w user1 z innej tabeli w user2:
źródło
Możesz utworzyć wyzwalacz w tableB, który aktualizuje tableA za każdym razem, gdy field_2 w tableB jest aktualizowany. Sprawdź tutaj, aby uzyskać więcej informacji na temat tworzenia wyzwalaczy - http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ
źródło