Disabling Rules

Previous Next

See Also

When SQL statements are executed in import tasks and SQL tasks, you can disable rules: In the Disable Rules field, you can check or clear the box for each SQL statement to specify whether rules (constraints, relationships, mandatory columns, allowed values, and more) need to be disabled or not when executing this SQL statement. This enables you to speed up performance when the data comes from a trusted source and is therefore expected not to contain any errors.

When rules are disabled, the Rules Engine sends all manipulations directly to the database, without splitting the manipulation up and checking each manipulated record separately. You can still use USoft-specific SQL functions and logical views in the statement. These are translated and handled correctly.


You are advised never to disable rules, unless performance problems are encountered that cannot be resolved by tuning the application otherwise.

Locate performance problems by using USoft BenchMark profiles, and measure the time difference in having rules enabled or disabled.

There are a few situations in which it is not possible to send a single SQL statement to the database. In these situations, manipulations are still handled record-by-record; disabling rules has no effect if any of the following items occur or are referred to anywhere in the statement:

· INVOKE keyword


· RECORDS keyword


· Component table


· Temporary table



Sequence numbers are not generated with Disable Rules switched on. To improve performance with generated sequence numbers, you could use the Disable Constraints option. This will cause the data to be handled record-by-record, but without constraint checks.

Executing manipulations with Disable Rules switched on in Batch Manipulation mode is possible, but is not advised. The user might get strange results when using batch manipulation if there are two SQL statements that modify the same data first without Disable Rules and a second time with Disable Rules. In this case an error message is generated.

For SQL tasks, record level commit means that each manipulation in the SQL task manipulates the records one by one and each record is committed separately. But when rules are disabled, the manipulation is sent to the database once. In this case, a commit is issued at the end for all manipulated records.