触发器与存储过程
在数据库中,触发器是当表/视图中发生某些特定事件时自动执行的过程(代码段)。在它的其他用途中,触发器主要用于维护数据库的完整性。存储过程是一种可供访问关系数据库的应用程序使用的方法。通常,存储过程用作验证数据和控制对数据库的访问的方法。
什么是触发器?
触发器是当数据库的表/视图中发生某些特定事件时自动执行的过程(代码段)。在它的其他用途中,触发器主要用于维护数据库的完整性。触发器还用于强制执行业务规则、审核数据库中的更改和复制数据。最常见的触发器是数据操作语言(datamanipulationlanguage,DML)触发器,在数据**纵时触发。一些数据库系统支持非数据触发器,这些触发器在数据定义语言(DDL)事件发生时触发。一些示例是在创建表时、在执行提交或回滚操作等过程中激发的触发器。这些触发器特别可用于审核。Oracle数据库系统支持模式级触发器(即修改数据库模式时触发的触发器),如创建后、更改前、更改后、删除前、删除后等。Oracle支持的四种主要触发器类型是行级触发器、列级触发器、列级触发器,每行类型触发器和For Each语句类型触发器。
什么是存储过程?
存储过程是应用程序访问关系数据库时可以使用的方法。通常,存储过程用作验证数据和控制对数据库的访问的方法。如果某些数据处理操作需要执行多个SQL语句,则这些操作将作为存储过程实现。调用存储过程时,必须使用CALL或EXECUTE语句。存储过程可以返回结果(例如SELECT语句的结果)。这些结果可以被其他存储过程或应用程序使用。用于编写存储过程的语言通常支持if、while、for等控制结构。根据所使用的数据库系统,可以使用多种语言来实现存储过程(例如Oracle中的PL/SQL和java、Microsoft SQL Server中的T-SQL(Transact-SQL)和.NET Framework)。此外,MySQL使用自己的存储过程。
触发器和存储过程之间有什么区别?