I den här artikeln kommer du att lära dig hur du använder WHEN-satsen i Oracle-utlösaren för att få utlösaren att aktiveras i det angivna tillståndet. Nedan är ett exempel.
Du kan testa det här triggerexemplet genom att skapa följande tabell och trigger i ditt Oracle-databasschema.
Skapa tabell
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) ) /
Skapa en Oracle-databasutlösare med WHEN-klausul
Följande trigger aktiveras endast när JOBB är lika med CLERK , och om den är det, kommer den att ställa in COMM-kolumnen (kommission) till 0.
CREATE OR REPLACE TRIGGER emp_trig_1 BEFORE INSERT ON EMP FOR EACH ROW WHEN (NEW.job = 'CLERK') BEGIN :NEW.comm := 0; END; /
Testa
Nedanstående infogningssats för EMP-tabell kommer att försöka infoga en post för CLERK med provision 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;
Fråga i tabellen
Fråga nu EMP-tabellen för posten ovan, och du kommer att se att COMM-kolumnvärdet är 0 .
SELECT * FROM EMP WHERE EMPNO = 7499;
Se även:
- Lär dig hur du skapar en utlösare i Oracle SQL Developer
- Skapa utlösare i Oracle Forms-exempel