DB 트리거 조건은 SQL식이 될 수 있으며 하위 쿼리를 포함 할 수 없다는 것을 알고 있습니다. 그러나 트리거 코드 내에서 PL/SQL 및 하위 쿼리를 사용할 수 있습니다. 가능한 경우 트리거 조건을 사용하면 더 나은 성능을 얻을 수 있다고 생각했습니다 (예 : SQL 엔진과 PL/SQL 간의 컨텍스트 전환이 저장되는 경우).DB 트리거 조건이 성능을 향상 시킵니까?
예를 들어, 트리거 조건을 사용하여 우리가 가진 것 :
CREATE TRIGGER hr.salary_check
BEFORE INSERT OR UPDATE OF salary, job_id ON hr.employees
FOR EACH ROW
WHEN (new.job_id <> 'AD_VP')
BEGIN
--pl/sql_block
END;
하지를 트리거 조건을 사용하여 우리는 거라고 :
CREATE TRIGGER hr.salary_check
BEFORE INSERT OR UPDATE OF salary, job_id ON hr.employees
FOR EACH ROW
BEGIN
IF (new.job_id <> 'AD_VP') THEN
--pl/sql_block
END IF;
END;
사용 a 사이의 성능 차이가 있습니다 DB의 트리거 조건은 코드의 실행을 피하고 그 코드의 실행을 피하기 위해 트리거 코드의 "IF"문 안에서 같은 조건을 사용하기 위해서입니까? 그렇다면 성능에 미치는 영향에 대한 의견을 보내 주시면 감사하겠습니다.
감사합니다. 나는 오라클이 이것에 관해서 어떤 것을 말하고 있을지도 모른다고 생각하고 있었고, 그래서 이것에 대한 좀 더 일반적인 지식을 가지고있다. 가독성 문제와는 별도로 트리거 조건의 목적이 무엇인지 알지 못합니다. 트리거 코드 내에서 동일한 작업을 수행 할 수 있으며 트리거 조건에서 수행 할 수있는 작업에 제한이있는 이유는 무엇입니까? 감사. – shwartz