sql >> Databasteknik >  >> RDS >> Oracle

Oracle Trigger WHEN Klausulexempel

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
  1. Automatisk datainsamling om slutförda uppgifter i MS SQL Server

  2. Hur man uppgraderar PostgreSQL10 till PostgreSQL11 med noll driftstopp

  3. Sammanfoga JSONB-värden i PostgreSQL?

  4. Konvertera från Oracles RAW(16) till .NET:s GUID