web-dev-qa-db-fra.com

Quelle est la différence entre un curseur et un déclencheur?

J'essaie de comprendre pourquoi utiliser un curseur ou vraiment comment ils travaillent (je suis un débutant).

Je ne trouve pas vraiment un but clair pour l'utiliser.

Comment se compare-t-il à un déclencheur?

1
Matias Ruiz

En règle générale, un curseur est utilisé pour iTerrer un ensemble de résultats renvoyé par une déclaration SELECT.

Les curseurs peuvent être utilisés dans des procédures stockées, des fonctions stockées et des déclencheurs .

Un déclencheur est un programme stocké exécuté automatiquement pour répondre à un événement spécifique comme une insertion, la mise à jour ou la suppression.

Comme vous pouvez le constater, ce sont des concepts très différents et ont des objectifs très différents.

Je vous suggère de passer en revue ces liens pour les bases sur ces deux concepts: déclencheurs , curseurs

5
630

Aperçu

  • Un curseur pointe de la ligne dans un ensemble de résultats (données)
  • Un déclencheur (instruction) exécute lorsque quelque chose est modifié (insérer, mettre à jour ou supprimer).

Exemple

Si vous voulez un exemple de monde réel. Vous allez au magasin pour prendre d'épicerie. Vous avez six dollars. Chaque article coûte deux dollars. Vous devez obtenir trois articles. La liste fonctionne. Si toutes les choses vont comme prévu, ces articles devraient être dans votre panier et vous devriez avoir 0 dollars à la fin.

  1. Des oranges
  2. Bière
  3. Bananes

Vous venez d'arriver à l'épicerie, vous regardez votre liste

  1. Oranges <- curseur pointant ici.
  2. Bière
  3. Bananes

Vous venez de recevoir les oranges, en train de traiter cet élément sur la liste.

  1. Orange
  2. Bière <- Curseur pointant ici.
  3. Bananes

Vous obtenez l'élément suivant de la liste et vous vous dirigez vers l'allée de la bière; Mais la femme a appelé et elle a besoin de pruneaux. Tu dois

  1. Vérifiez vos fonds.
  2. Vérifiez votre liste.
  3. Calculez si vous en avez assez, alors
    • Assert "Non peut faire"
    • Ajoutez-le à votre liste, efficacement A "Vous avez été couvert."

C'est une instruction. IT déclenché lorsque votre femme a essayé de vous amener à ramasser des pruneaux. Afin de garder votre son de liste, et parce que vous valorisez l'intégrité des données, vous dites à votre femme "Non peut faire" Résister à son commit. Vous espérez que votre femme peut gérer l'affirmation sans blesser. Vous continuez à rechercher de la bière.

Dans le monde réel, vous auriez continué à la bière quand même parce que les bases de données n'aiment pas non plus être harcelées ni interrompre leurs travailleurs quand ils font leur travail.

Voir également

Quelle que soit la base de données, vous devriez toujours vous diriger vers les documents PostgreSQL pour des idées générales sur la façon dont quelque chose fonctionne comme ils sont beaucoup plus verbeux,

  • curseurs dans plpgsql (procédure)
  • DECLAREFETCH Déclencheurs interactifs de PostgreSQL. Une API que vous n'obtenez pas toujours parce que ce n'est pas dans la spécification

    La norme SQL définit la récupération d'une utilisation dans SQL incorporé uniquement.

  • déclenche

Une note importante est que cette syntaxe mentionnée, mais elles ne sont pas strictement syntaxiques. Pour déclencher des déclencheurs, le plus strict syntaxe doc est CREATE TRIGGER

2
Evan Carroll