存储过程和触发器之间SQL的差异(SQL Differences between stored pr

2019-09-16 04:31发布

我无法理解一个存储过程,在SQL触发器之间的差异。 如果有人可能还跟解释给我,将是巨大的。

提前致谢

Answer 1:

存储过程是一个用户定义的一块用PL / SQL的本地版本的代码,它可以返回通过调用它显式调用一个值(使它的函数)。

触发器是当各种事件发生(例如,更新,插入,删除)时自动运行的存储过程。

恕我直言,是存储过程要避免,除非绝对需要 。



Answer 2:

认为像在面向对象的编程语言中的方法的存储过程的。 您传递一些参数,它的工作,它可以返回一些东西。

触发器是在面向对象的编程语言更像是事件处理程序。 在一定条件下,它可以或者(a)处理该事件本身,或(b)做一些处理并且允许事件继续冒泡。



Answer 3:

关于在SQL Server中的触发器:触发器是当一个事件在数据库服务器发生时会自动被执行的代码专题片。

DML触发器当用户试图通过数据操纵语言(DML)事件来修改数据执行。 DML事件是INSERT,UPDATE或DELETE表或视图的语句。 当任何有效的事件被触发这些触发器触发,不管任何表行是否会受到影响

我们可以创建触发器是这样的:

CREATE TRIGGER TriggerName
ON [dbo].[TableName]
FOR DELETE, INSERT, UPDATE
AS
BEGIN
    SET NOCOUNT ON
END

存储过程是没有什么比你保存,所以你可以一遍又一遍地重复使用代码编写的SQL代码更。 所以,如果你想,而不必每次都写查询你将它保存为一个存储过程,然后就调用存储过程来执行保存为一部分的SQL代码有关,你写一遍又一遍的查询,该存储过程。

  • 我们可以做很多编程的东西,在一个存储过程,并一次又一次地执行。
  • 我们可以创建获取用户输入的处理过程,并给输出
  • 我们可以处理通过尝试捕捉错误
  • 存储过程可以嵌套和嵌套调用一次次给
  • 这是更安全

我们可以创建这样一个存储过程:

CREATE PROCEDURE dbo.Sample_Procedure 
    @param1 int = 0,
    @param2 int  
AS
    SELECT @param1,@param2 
    RETURN 0;

在两者的差异,然后

  • 触发器不能手动调用,其中存储过程可以被手动地调用。

  • 当事件发生,并可以使用从删除或从数据库中删除表和数据报告和数据保护触发自动执行。 我们可以从触发预防。 在另一方面,存储过程必须有人来叫。

  • 存储过程可以从前端(客户端应用),但触发器不能从客户端应用程序调用被调用。



Answer 4:

触发器和过程之间存在一些差异:

  1. 我们可以执行每当我们要与执行命令的帮助存储过程,但每当一个事件的触发下才可以执行(插入,删除和更新)是在其上定义触发器的表解雇。
  2. 存储过程可能需要输入参数,但我们不能传递参数作为输入触发。
  3. 存储过程可以返回值,而是一个触发器不能返回一个值。
  4. 我们可以用交易之类的语句开始事务,提交事务和回滚存储过程中,但我们不能用一个触发器中的交易报表
  5. 我们甚至可以从前端的存储过程(.asp文件,.aspx文件,.ascx文件等),但我们不能从这些文件中调用一个触发器。


Answer 5:

经过触发器触发的插入,更新或删除。 存储过程是,当你调用它正在运行服务器端程序。



Answer 6:

存储过程是一组被编译一次,然后可以执行多次的SQL语句。 触发命名为当触发事件发生时被隐式燃煤数据库对象。 触发动作之前或触发事件后运行。 触发器是类似于存储过程,但在它们被调用的方式不同。 触发不是由用户,其中,作为存储过程由用户直接调用直接调用。



Answer 7:

存储过程是一块驻留在和由DBMS执行,并且可以由客户端或通过其他的存储过程显式调用代码。 它通常写在程序扩展SQL的,如在MS SQL服务器Oracle或T-SQL下,PL / SQL,但是一些的DBMS支持更广泛的语言如Java或.NET为好。

触发器是一个(排序的)存储过程不能被显式调用,而是响应于事件,如在表中插入,更新或删除或行自动执行。



Answer 8:

触发器是一种特殊类型的存储过程。 它连接到一个表并且仅当插入,更新或删除发生时触发。 存储过程是您可以创建并在表中重复使用基本功能。



Answer 9:

存储过程可以被称为另一种形式的存储过程,但不是AB触发。 每当用户希望可以执行存储过程,但在事件发生时没有trigger.A触发器仅触发。 存储过程可以有一个打印语句,多参数和返回值,但不会触发。 存储过程可以从前端被调用,但不触发。



Answer 10:

                    ***TRIGGERS*** 
  1. 在特定时间采取行动。

  2. 触发器是一种特殊类型的,不能由用户直接调用存储过程。

  3. 当创建触发器,它被定义为当触发数据修改的特定类型是针对特定的表或列由


Answer 11:

两者都是包含块LOF代码数据库对象可以用于实现业务逻辑

区别是:

1) Triggers自动火灾,但他们需要的事件。 (实施例: createalterdropinsertdeleteupdate )。

2)程序已经被显式调用,然后执行。 他们不需要createalterdropinsertdeleteupdate 。 我们还可以自动使用sp_procoption执行程序。

3)我们可以不通过内部参数triggers

但我们可以通过存储过程中参数

例如:如果我们想显示一条消息,“错误”

使用触发器:我们需要一些DDL/DML使用过程声明:NO DDL/DML需要



Answer 12:

如果你熟悉JavaScript,一个triggeraddEventListenerStored Procedure是一个callback



Answer 13:

差别的存储过程和触发器之间

我们可以定义一个触发器,作为一个数据库对象就像一个存储过程,或者我们可以说,它是一种特殊的存储过程,当一个事件在一个数据库中出现的时候触发。 我们可以执行一个SQL查询时触发一个事件在一个数据库中,将“有所作为”。

    Triggers are fired implicitly while stored procedures are fired explicitly.


文章来源: SQL Differences between stored procedure and triggers