When a record is stored, a couple of actions and checks are performed. If data has been manipulated in an application window, record validation starts with checking if all mandatory columns have been entered. If so, the Rules Engine performs the checks listed in the diagram. In the Insert, Update, and Delete column it is listed whether the check is performed for the respective manipulation.
Seq
|
Check
|
BenchMark Reason
|
Ins
|
Upd
|
Del
|
1
|
Lock record and subtype records (*1)
|
LOCK_RECORD
|
|
Y
|
Y
|
2
|
Set default values (*1)
|
|
Y
|
|
|
3
|
Foreground authorization
|
AUTHORIZATION
|
Y
|
Y
|
Y
|
4
|
Corrective domain constraints
|
DOMAIN_CONSTRAINT
|
Y
|
Y
|
|
5
|
Sequence numbers
|
SEQNO
|
Y
|
|
|
6
|
Update On Self constraints (*2)
|
SELECT_FOR_UPDATE
NEWVALUES
|
Y
|
Y
|
|
7
|
Mandatory columns
|
|
Y
|
Y
|
|
8
|
Domain checks
|
|
Y
|
Y
|
|
9
|
Columns updatable
(Yes, No, Only if Null)
|
|
|
Y
|
|
10
|
Restrictive domain constraints
|
DOMAIN_CONSTRAINT
|
Y
|
Y
|
|
11
|
Foreign keys updatable
(Yes, No, Only if Null)
|
|
|
Y
|
|
12
|
Unique keys
|
UNIQUE_KEY
|
Y
|
Y
|
|
13
|
Restrictive Update/Delete Rules
|
RESTRICTED
|
|
Y
|
Y
|
14
|
Restrictive, non-transitional,
single-record constraints
|
ROW_CONSTRAINT
|
Y
|
Y
|
|
15
|
Restrictive, transitional,
single-record constraints
|
ROW_CONSTRAINT
|
Y
|
Y
|
Y
|
16
|
Restrictive, transitional,
multi-record constraints
|
ROW_CONSTRAINT
|
Y
|
Y
|
Y
|
17
|
Immediate subtype definitions (totality, exclusivity)
|
|
Y
|
Y
|
|
18
|
STORE-RECORD,
first subtype, then supertype.
|
MANIPULATION
|
Y
|
Y
|
Y
|
19
|
For restrictive, non-transitional, multi-record constraints, the primary key of the driving table record is determined. In some cases, a constraint key query is needed.
|
CONSTRAINT_KEYQUERY
|
Y
|
Y
|
Y
|
20
|
Cardinality checks are generated for relationships in which the current record is a child.
|
CARDINALITY
|
Y
|
Y
|
Y
|
21
|
Cascading or nullifying Update/Delete Rules
|
CASCADING
|
|
Y
|
Y
|
22
|
Corrective, non-transitional multi-record constraints (not deferred) (*3)
|
SELECT_FOR_<manip>
NEWVALUES
or OLD_NEWVALUES
|
Y
|
Y
|
Y
|
23
|
Corrective, transitional, multi-record constraints (not deferred) (*3)
|
SELECT_FOR_<manip>
NEWVALUES
or OLD_NEWVALUES
|
Y
|
Y
|
Y
|
NOTES:
•If data has been manipulated in an application window, this step already took place. •Update On Self constraints are: •Corrective single-record constraints. •Corrective multi-record constraints, for which the updated table is the triggering table. •This step can lead to new row events.
|