Oracle PL / SQL –启用和禁用触发器

10世界杯决赛

本文向您展示如何使用ALTER TRIGGER和ALTER TABLE启用和禁用触发器。

-- 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.表+触发器

1.1创建一个表和两个触发器。

test_data

--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;

创建触发器时,默认情况下将ENABLED它们。

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

TRIGGER_NAME 状态 trg_test_a 已启用 trg_test_b 已启用

2. ALTER TRIGGER –启用和禁用触发器

2.1禁用触发器的trg_test_a

ALTER TRIGGER trg_test_a DISABLE;

2.2检查触发状态。

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

TRIGGER_NAME 状态 TRG_TEST_A 已停用

注意 有时您需要在某些情况下(例如,

触发器引用的对象不可用。 您必须执行较大的数据加载,并希望其快速进行而不触发触发器。 您正在将数据加载到触发器适用的表中。

2.3启用禁用的触发器的trg_test_a

ALTER TRIGGER trg_test_a ENABLE;

2.4再次检查触发状态。

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

TRIGGER_NAME 状态 TRG_TEST_A 已启用

3. ALTER TABLE –启用和禁用所有触发器

3.1取消特定表test_data所有触发器的test_data

ALTER TABLE test_data DISABLE ALL TRIGGERS;

3.2检查触发器状态。

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

TRIGGER_NAME 状态 TRG_TEST_A 已停用 TRG_TEST_B 已停用

3.3启用特定表test_data所有触发器的test_data

ALTER TABLE test_data ENABLE ALL TRIGGERS;

3.4再次检查触发器状态。

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

TRIGGER_NAME 状态 TRG_TEST_A 已启用 TRG_TEST_B 已启用

参考文献

ALTER TRIGGER示例 数据库管理员指南:-启用和禁用触发器 PL / SQL触发器

标签: alter table Oracle plsql 触发器

翻译自: https://mkyong.com/oracle/oracle-plsql-enable-and-disable-triggers/