About Constraint Exception Messages

Describe the process or concept here

When a SQL constraint exception is thrown from the application database, the IDO Request layer catches the exception and can build a translatable message from the SQL constraint name and type, if a message for that constraint name exists in the ObjectMainMessages table. Different constraints can use the same basic message, which varies only by the different object names that are referenced in the message text. For example, many constraint exceptions could be reported to a user with this basic message:

The &1 entered already exists

where the &1 substitution expression could refer to any one of hundreds of different objects.

However, the text (or the object name that references the text) to be substituted cannot be passed when the constraint exception occurs. The IDO Request layer can only pick up the constraint name and type from the caught exception. The ObjectBuildMessages table contains child records that reference either a Message Number defined on the Maintain Application Messages form or another Object Name defined on the Maintain Application Message Objects form for the text to be used for each substitution expression that exists in the referenced base.

Thus the same base message from the ApplicationMessage table can be used by many different constraints, each of which defines a different set of references for the substitution text placeholders in the message.