
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
50 lines
1.1 KiB
Plaintext
50 lines
1.1 KiB
Plaintext
== Why is this an issue?
|
|
|
|
The DML events clause of a trigger is not meant to be used with multiple ``++OF++`` conditions. When it is, only the last one will actually be taken into account, without any error message being produced. This can lead to counter-intuitive code.
|
|
|
|
|
|
Only the ``++UPDATE++`` event should have an ``++OF++`` condition, and there should be at most one occurence of it.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,sql]
|
|
----
|
|
CREATE OR REPLACE TRIGGER myTrigger
|
|
BEFORE UPDATE OF firstName OR UPDATE OF lastName -- Noncompliant - will *only* be triggered on updates of lastName!
|
|
ON myTable
|
|
FOR EACH ROW
|
|
BEGIN
|
|
NULL;
|
|
END;
|
|
/
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,sql]
|
|
----
|
|
CREATE OR REPLACE TRIGGER myTrigger
|
|
BEFORE UPDATE OF firstName, lastName -- Compliant - triggered on updates of firstName or/and lastName
|
|
ON myTable
|
|
FOR EACH ROW
|
|
BEGIN
|
|
NULL;
|
|
END;
|
|
/
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Refactor this events clause to have only one "OF" clause.
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|