• While triggers are not my favorite, I would like to bring up the question of how business rules for the data are enforced when someone makes changes directly in the database, rather than through the application.

    Granted, it's always preferable to use the application, but what if you have two applications that need to import/export data between each other?

    As a developer, I absolutely cringe when I need to pass data to another system and am told "you have to go through the application, because all of the business rules are there". Robot-like macros can get the job done, but are very tedious, especially when the formatting of the application screens are changed. It would be so much more seamless to be able to pass data between the databases.

    I've often wondered about the separation of data layer, business layer and user interface layer. Maybe we need a tool (aside from triggers) that can be used in both the data layer (database) and the user interface layer (application) so that business rules are enforced no matter how the data is coming in.