Unterschiede zwischen recreate procedure und create or alter procedure

<< Debugger Collect Statistics Beispiel | IBExpert | Beispielprozedur: Altersbestimmung >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


Unterschiede zwischen recreate procedure und create or alter procedure

Von Jiri Cincura: http://blog.cincura.net

Ich war vor kurzem in einem Gespräch über Firebird, wo es stellte sich heraus, dass viele Leute diese beiden Konstrukte nicht kennen. Entweder kennen sie nicht beide oder wissen nicht, dass sie sich unterscheiden. Diese Statements sind sich ähnlich, allerding steckt das Übel im Detail.

Also, woran liegt das Problem? Beide "updaten" so zu sagen, eine Prozedur (oder andere Objekttypen). Allerdings löscht die erste zunächst die Prozedur und dann erzeugt sie wieder neu (und ja, Abhängigkeiten können da zu Probleme führen). Andererseits erzeugt die andere eine neue Prozedur, sofern sie noch nicht vorhanden ist; sonst wird sie geändert. Abhängigkeiten beiseite, was könnte sonst noch an eine Prozedur "gebunden" sein? Richtig: es sind die Zugriffsrechte (GRANTs). Die erste wird diese nicht halten. Sie müssen die Zugangsrechte selbst wieder erstellen. Die andere wird sie behalten, da sie nur eine Änderung der Prozedurdefinition ausführt.

Wenn nicht sorgfältig verwendet, können Sie leicht Ihre Datenbank kaputt machen. Jede Form kann nicht in allen Fällen angewendet werden. Verwenden Sie immer die Form, die für Ihr Szenario angemessen ist.

Siehe auch:
deutschsprachig:
Stored procedure
englischsprachig:
SELECT
DDL - Data Definition Language
Stored procedure and trigger language
Writing stored procedures and triggers

zurück zum Seitenanfang
<< Debugger Collect Statistics Beispiel | IBExpert | Beispielprozedur: Altersbestimmung >>