Próba znalezienia sposobu napisania wyzwalacza Oracle, który sprawdzałby przed wstawieniem, aby zobaczyć, czy dopasowanie zostało znalezione w kolumnie głównej, a jeśli tak, zaktualizować informacje o wierszu zamiast wstawiania nowego wiersza.
Na to patrzyłem before insert
. Czy istnieje sposób na anulowanie wstawiania w oparciu o kryteria w tym bloku?
Ja również przyjrzałem się użyciu instead of
klauzula, ale wymaga pracy nad poglądem.
Jaki jest najlepszy sposób na zrobienie tego?
Odpowiedzi:
4 dla odpowiedzi № 1Użyj instrukcji MERGE zamiast INSERT.
0 dla odpowiedzi nr 2
Użyj instrukcji scalania.
MERGE INTO <<your table>> t
USING (<<your list of records - can be the result of a SELECT >>)
ON ( <<join between table and list of records >>)
WHEN MATCHED THEN
UPDATE SET << the rows you want to set>>
WHEN NOT MATCHED THEN
INSERT (<<columns of table>>)
VALUES (<<value>>)
https://oracle-base.com/articles/9i/merge-statement