Integrity constraints or business logic constraints describe the database application constraints in general. These constraints are either enforced by the business logic tier of the application program or by SQL procedural languages. Trigger and rule systems can also be used for this purpose. For example, the customer should have at most one active service at a time. Based on the nature of the application, one could favor using an SQL procedural language or a high-level programming language to meet the semantic constraints, or mix the two approaches.
The advantages of using the SQL programming language are as follows:
Performance: RDBMSs often have complex analyzers to generate efficient execution plans. Also, in some cases such as data mining, the amount of data that needs to be manipulated is very large. Manipulating the data using procedural SQL language eliminates the network data transfer. Finally, some procedural SQL languages utilize clever caching algorithms.
Last minute change: For the SQL procedural languages, one could deploy bug fixes without service disruption.
Implementing business logic in database tier has a lot of pros and cons and it is a highly arguable topic. For example, some disadvantages of implementing business logic in the database is visibility, developers efficiency in writing code due to a lack of proper tools and IDEs, and code reuse.