本文向您展示如何使用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/