Oracle PL/SQL - Trigger aktivieren und deaktivieren

Oracle PL / SQL - Aktivieren und Deaktivieren von Triggern

Dieser Artikel zeigt Ihnen, wie SieALTER TRIGGER undALTER TABLE zum Aktivieren und Deaktivieren von Triggern verwenden.

-- enable / disable a trigger
ALTER TRIGGER trigger_name ENABLE;
ALTER TRIGGER trigger_name DISABLE;

-- enable / disable all triggers for a specific table
ALTER TABLE table_name ENABLE ALL TRIGGERS;
ALTER TABLE table_name DISABLE ALL TRIGGERS;

1. Tabelle + Trigger

1.1 Create a table and two triggers on it.

Testdaten

--Creating test_data table.

CREATE TABLE test_data
(
  id number(5) primary key,
  test_result number(5)
);

trg_test_a

SET SERVEROUTPUT ON;

CREATE OR REPLACE TRIGGER trg_test_a
BEFORE
     UPDATE OR DELETE OR INSERT
ON test_data
  FOR EACH ROW

BEGIN

  -- business logic will be here to perform on any insert/update/delete
  dbms_output.put_line('trg_test_a Trigger called.');

END;

trg_test_b

SET SERVEROUTPUT ON;

CREATE OR REPLACE TRIGGER trg_test_b
BEFORE
     UPDATE OR DELETE OR INSERT
ON test_data
  FOR EACH ROW

BEGIN

  dbms_output.put_line('trg_test_b Trigger called.');

END;

Wenn Sie Trigger erstellen, sind diese standardmäßigENABLED.

SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS where upper(TRIGGER_NAME) in ('TRG_TEST_A','TRG_TEST_B');
TRIGGER_NAME STATUS

trg_test_a

AKTIVIERT

trg_test_b

AKTIVIERT

2. ALTER TRIGGER - Aktiviert und deaktiviert einen Trigger

2.1 Example to disable a trigger trg_test_a

ALTER TRIGGER trg_test_a DISABLE;

2.2 Check trigger status.

SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS where upper(TRIGGER_NAME) = 'TRG_TEST_A';
TRIGGER_NAME STATUS

TRG_TEST_A

BEHINDERT

Note
Manchmal müssen Sie den Trigger unter bestimmten Bedingungen deaktivieren, z.

  1. Ein Objekt, auf das der Trigger verweist, ist nicht verfügbar.

  2. Sie müssen eine große Datenladung durchführen und möchten, dass diese schnell ausgeführt wird, ohne dass Auslöser ausgelöst werden.

  3. Sie laden Daten in die Tabelle, für die der Trigger gilt.

2.3 Example to enable a disabled trigger trg_test_a

ALTER TRIGGER trg_test_a ENABLE;

2.4 Check trigger status again.

SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS where upper(TRIGGER_NAME) = 'TRG_TEST_A';
TRIGGER_NAME STATUS

TRG_TEST_A

AKTIVIERT

3. ALTER TABLE - Aktiviert und deaktiviert alle Trigger

3.1 Example to disbale all triggers for a specific table test_data

ALTER TABLE test_data DISABLE ALL TRIGGERS;

3.2 Check triggers status.

SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS where upper(TRIGGER_NAME) IN ('TRG_TEST_A','TRG_TEST_B');
TRIGGER_NAME STATUS

TRG_TEST_A

BEHINDERT

TRG_TEST_B

BEHINDERT

3.3 Example to enable all triggers for a specific table test_data

ALTER TABLE test_data ENABLE ALL TRIGGERS;

3.4 Check triggers status again.

SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS where upper(TRIGGER_NAME) IN ('TRG_TEST_A','TRG_TEST_B');
TRIGGER_NAME STATUS

TRG_TEST_A

AKTIVIERT

TRG_TEST_B

AKTIVIERT