W tym artykule dowiesz się, jak używać klauzuli WHEN w wyzwalaczu Oracle, aby wyzwalacz zadziałał w określonym warunku. Poniżej znajduje się przykład.
Możesz przetestować ten przykład wyzwalacza, tworząc poniższą tabelę i wyzwalacz w schemacie bazy danych Oracle.
Utwórz tabelę
CREATE TABLE EMP ( EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10 BYTE), JOB VARCHAR2(9 BYTE), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ) /
Utwórz wyzwalacz bazy danych Oracle z klauzulą WHEN
Poniższy wyzwalacz zostanie uruchomiony tylko wtedy, gdy JOB jest równe CLERK , a jeśli tak, to ustawi kolumnę COMM (prowizja) na 0.
CREATE OR REPLACE TRIGGER emp_trig_1 BEFORE INSERT ON EMP FOR EACH ROW WHEN (NEW.job = 'CLERK') BEGIN :NEW.comm := 0; END; /
Test
Poniższa instrukcja wstawiania dla tabeli EMP spróbuje wstawić rekord dla CLERK z prowizją 300.
SET DEFINE OFF; Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7499, 'ALLEN', 'CLERK', 7698, TO_DATE('02/20/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1600, 300, 30); COMMIT;
Przeszukaj tabelę
Teraz zapytaj tabelę EMP o wstawiony powyżej rekord, a zobaczysz, że wartość kolumny COMM wynosi 0 .
SELECT * FROM EMP WHERE EMPNO = 7499;
Zobacz też:
- Dowiedz się, jak utworzyć wyzwalacz w Oracle SQL Developer
- Utwórz wyzwalacze w przykładzie formularzy Oracle
-
Co zrobić, jeśli podczas korzystania z programu SQL Server z naszym sterownikiem Oracle ODBC pojawi się niepoprawny błąd porządkowy zakładki?
-
PLSQL :NOWY i :STARY
-
Czy ktoś mógłby wyjaśnić, co tak naprawdę robi instrukcja MERGE w Oracle?
-
Wielokrotne przenoszenie danych z SQL Server do Oracle
-
Proces aktualizacji krok po kroku do wersji R12.2 Aktualizacja, część -3