私は、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;
使用しての性能に差がありますDBのトリガ条件は、コードの実行を避け、そのコードの実行を避けるためにトリガコードの "IF"文の中で同じ条件を使用するためですか?もしそうなら、私はパフォーマンスへのあなたのコメントに感謝します。
感謝。私はオラクルがこれについて何かを述べているかもしれないと思っていたので、これは構成に非常に依存している場合に備えて、これに関するいくつかのより一般的な知識を持っています。読みやすさの問題とは別に、トリガー条件の目的は何か、トリガーコード内で同じことを達成できるのか、そのトリガー条件で何ができるのかについての制限があるのはまだわかりません。ありがとう。 – shwartz