Conditions for Using Set-Oriented Manipulations

Previous Next

If manipulations are handled set-oriented, there will be no automatic refresh of records on the screen. Also, the Rules Engine will perform no uniqueness checks. If a unique key violation takes place, the user will see a database error message instead of a USoft error message.

The Rules Engine CANNOT handle a manipulation set-oriented if:

· Constraints that need to be evaluated have been defined on the manipulated table, except when these constraints are deactivated.


· Relationship columns (primary or foreign key columns) are changed within the manipulation. Insert and delete manipulations will therefore never be handled set-oriented in case of relationships.


· Authorization on column level has been defined on the manipulated table.


· The manipulation statement contains an 'INVOKE' part.


· The manipulated table is a view, a temporary table, or a static table.


· For INSERT statements, default values are defined for columns of the manipulated table that are not specified in the statement.


· Generate Unique Values has been set for a column of the manipulated table.


· The manipulated table is being referenced a second time in the new-values part.


· The transaction mode of the Rules Engine is specified as 'Batch Manipulation'. In batch-manipulation mode the Rules Engine collects all row events and executes them on commit time.


· The Auto-Commit application property has been set to Yes.


· Corrective domain constraints have been defined.


· Domain checks or column checks have been defined on the manipulated table.

Manipulations on subtype constellations are partially supported:

· Insert statements are not supported.


· Delete statements are only supported if the whole constellation resides in the same physical table and the delete-super-on-delete attribute is switched on for all affected subtypes.


· Update statements are only supported if the columns being updated reside in the same physical table and none of the updated columns is a subtype indicator.

The large list of restrictions makes this option only suitable for very specific actions, like batches which perform loader-functions, batches to fill history tables, or batches to perform heavy duty end-of-the-month calculations, for example. For online activities, it will probably not be very applicable.