web-dev-qa-db-fra.com

Différences SQL entre procédure stockée et déclencheurs

J'ai du mal à comprendre la différence entre une procédure stockée et un déclencheur dans SQL . Si quelqu'un pouvait avoir la gentillesse de me l'expliquer, ce serait formidable.

Merci d'avance

29
Dynamiite

Une procédure stockée est un morceau de code défini par l'utilisateur écrit dans la version locale de PL/SQL, qui peut renvoyer une valeur (en faisant une fonction) appelée en l'appelant explicitement.

Un déclencheur est une procédure stockée qui s'exécute automatiquement lorsque divers événements se produisent (par exemple, mettre à jour, insérer, supprimer).

Les procédures stockées IMHO sont à éviter sauf obligation absolue .

26
Bohemian

Pensez à une procédure stockée comme une méthode dans un langage de programmation orienté objet. Vous transmettez certains paramètres, cela fonctionne et peut renvoyer quelque chose.

Les déclencheurs ressemblent davantage à des gestionnaires d'événements dans un langage de programmation orienté objet. A certaines conditions, il peut soit (a) gérer l'événement lui-même, soit (b) effectuer certains traitements et permettre à l'événement de continuer à bouillonner.

29
mgw854

En ce qui concerne les déclencheurs dans SQL Server: un déclencheur est un morceau de code spécial qui est automatiquement exécuté lorsqu'un événement se produit sur le serveur de base de données. 

Les déclencheurs DML s'exécutent lorsqu'un utilisateur tente de modifier des données via un événement DML (Data Manipulation Language). Les événements DML sont des instructions INSERT, UPDATE ou DELETE sur une table ou une vue. Ces déclencheurs se déclenchent lorsqu'un événement valide est déclenché, que des lignes de la table soient affectées ou non.

Nous pouvons créer un déclencheur comme ceci:

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

Une procédure stockée n'est rien d'autre qu'un code SQL préparé que vous enregistrez, vous permettant ainsi de le réutiliser à plusieurs reprises. Donc, si vous pensez à une requête que vous écrivez encore et encore, au lieu de l'écrire à chaque fois, sauvegardez-la en tant que procédure stockée, puis appelez simplement la procédure stockée pour exécuter le code SQL que vous avez enregistré dans la procédure stockée.

  • Nous pouvons faire beaucoup de choses de programmation dans une procédure stockée et exécuter encore et encore.
  • Nous pouvons créer une procédure qui prend le processus d'entrée et donne le résultat
  • Nous pouvons gérer l'erreur grâce à try catch
  • Les procédures stockées peuvent être imbriquées et appeler encore et encore avec des appels imbriqués
  • C'est plus sécurisé

Nous pouvons créer une procédure stockée comme ceci:

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

Différences dans les deux alors

  • Le déclencheur ne peut pas être appelé manuellement, alors qu'une procédure stockée peut être appelée manuellement.

  • Le déclencheur s'exécute automatiquement lorsqu'un événement se produit et peut être utilisé pour la création de rapports et la protection des données contre la suppression ou la suppression de la table et des données de la base de données. Nous pouvons empêcher de déclencher. D'autre part, une procédure stockée doit être appelée par quelqu'un. 

  • Une procédure stockée peut être appelée depuis le client (application client), mais le déclencheur ne peut pas être appelé depuis une application client.

7

Quelques différences entre les déclencheurs et les procédures: 

  1. Nous pouvons exécuter une procédure stockée à tout moment à l'aide de la commande exec, mais un déclencheur ne peut être exécuté que lorsqu'un événement (insertion, suppression et mise à jour) est déclenché sur la table sur laquelle le déclencheur est défini.
  2. La procédure stockée peut prendre des paramètres d'entrée, mais nous ne pouvons pas transmettre de paramètres en tant qu'entrée à un déclencheur.
  3. Les procédures stockées peuvent renvoyer des valeurs mais un déclencheur ne peut pas renvoyer de valeur.
  4. Nous pouvons utiliser des instructions de transaction telles que begin transaction, commit transaction et annulation dans une procédure stockée, mais nous ne pouvons pas utiliser d'instructions de transaction dans un déclencheur.
  5. Nous pouvons appeler une procédure stockée à partir du système frontal (fichiers .asp, fichiers .aspx, fichiers .ascx, etc.), mais nous ne pouvons pas appeler de déclencheur à partir de ces fichiers.
6
Aboli Ogale

Un déclencheur se déclenche après une insertion, une mise à jour ou une suppression. Une procédure stockée est un programme côté serveur qui est exécuté lorsque vous l'appelez.

4
Tim

Une procédure stockée est un groupe d'instructions SQL compilées une fois, puis pouvant être exécutées plusieurs fois. Les déclencheurs sont des objets de base de données nommés qui sont activés implicitement lorsqu'un événement déclencheur se produit. L'action de déclenchement peut être exécutée avant ou après l'événement déclencheur. Les déclencheurs sont similaires aux procédures stockées, mais ils diffèrent par la manière dont ils sont appelés. Un déclencheur n'est pas appelé directement par un utilisateur, alors qu'une procédure stockée est directement appelée par un utilisateur.

1
Deepu

Une procédure stockée est un morceau de code qui réside dans et est exécuté par le SGBD et peut être appelé explicitement par le client ou par d'autres procédures stockées. Il est généralement écrit dans une extension procédurale de SQL, telle que PL/SQL sous Oracle ou T-SQL sous MS SQL Server, mais certains SGBD prennent également en charge des langages plus généraux tels que Java ou .NET.

Un déclencheur est une procédure stockée (en quelque sorte) qui ne peut pas être appelée explicitement. Il s'exécute automatiquement en réponse à des événements tels que l'insertion, la mise à jour ou la suppression, ou les lignes d'une table.

1

Une procédure stockée peut être appelée autre procédure stockée mais pas un déclencheur ab .. Une procédure stockée peut être exécutée à tout moment, mais pas un déclencheur. Un déclencheur est activé uniquement lorsque des événements se produisent .. Une procédure stockée peut avoir une instruction print, plusieurs paramètres et valeurs de retour, mais pas un déclencheur . Une procédure stockée peut être appelée depuis le début mais ne doit pas être déclenchée.

1
Sayani
                    ***TRIGGERS*** 
  1. Action à un moment précis.

  2. Les déclencheurs sont un type spécial de procédure stockée qui n'est pas appelée directement par l'utilisateur.

  3. Lorsque le déclencheur est créé, il est défini pour se déclencher lorsqu'un type spécifique de modification de données est effectué sur une table ou une colonne spécifique.
1
user3613136

Un déclencheur est un type spécial de procédure stockée. Il est attaché à une table et ne se déclenche qu’une insertion, une mise à jour ou une suppression. Les procédures stockées sont des fonctions essentielles que vous pouvez créer et réutiliser dans la table.

1
sql learner

Si vous connaissez JavaScript, une trigger est une addEventListener et Stored Procedure est une callback.

0
Vighnesh Raut

Les deux sont des objets de base de données contenant des blocs de code pouvant être utilisés pour mettre en œuvre la logique applicative. 

Les différences sont: 

1) Triggers tirent automatiquement mais ils ont besoin d’événements pour cela. (Exemple: create, alter, drop, insert, delete, update).

2) Les procédures doivent être explicitement appelées puis exécutées. Ils n'ont pas besoin de create, alter, drop, insert, delete, update. nous pouvons également exécuter des procédures automatiquement à l’aide de sp_procoption. 

3) nous ne pouvons pas transmettre de paramètres à l'intérieur de la triggers

mais nous pouvons passer des paramètres à l'intérieur des procédures stockées

exemple: si on veut afficher un message "erreur" 

en utilisant un déclencheur: nous avons besoin d'une instruction DDL/DML en utilisant une procédure: NO DDL/DML est nécessaire

0
Arun Kumar Mishra