Ich habe eine Object
Tabelle, die aus einem integrierten Dienst ( den ich bei Bedarf ändern kann ) aus einer anderen Datenbank ausgefüllt wird. An bestimmten Stellen müssen wir manuell Beiträge in eine andere Tabelle einfügen, ObjectObjectGroup (ObjectId, ObjectGroupId)
die benötigt wird, wenn Object.ObjectType
ein bestimmter ganzzahliger Wert vorliegt. Da der Integrationsdienst diese Art von Aktualisierung nicht verarbeitet, möchte ich der Objekttabelle einen Trigger hinzufügen, der im Pseudocode wie folgt lautet:
if Object.ObjectType = 10
begin
if Object.ObjectNumber like '<string pattern>'
begin
insert into ObjectObjectGroup values...
end
end
Ist dieses Setup sinnvoll oder gibt es einen besseren Weg in Bezug auf die Leistung?
quelle
Trigger sind ein leistungsstarkes Werkzeug, und wie bei jedem anderen Werkzeug müssen Sie bei der Verwendung vorsichtig sein.
Wenn Sie einen Fehler in einem Trigger machen, können die Dinge DRASTISCH schief gehen, und wenn Sie keine Spuren verfolgen, werden Sie nicht merken ...
Sie ändern / fügen / löschen Daten auf magische Weise ein, die der Benutzer der Datenbank (die aktuelle Anwendung / jede zukünftige Anwendung / ein Entwickler, der ein einmaliges Update durchführt) nicht realisiert / beabsichtigt hat.
Das große Problem ist, dass es anderen Entwicklern / Benutzern nach dem Erstellen des Triggers nicht klar ist, dass ein Trigger überhaupt vorhanden ist und was er tut.
Das heißt, sie sind ein großartiges Werkzeug zur Aufrechterhaltung der Integrität Ihrer Daten und zur echten Prüfung von Änderungen.
Sie müssen sich fragen, ob die Logik, die Sie in den Trigger einfügen möchten, am besten zu den Anwendungen oder innerhalb der Datenbank passt und die Risiken auf beiden Seiten abwägt (was passiert, wenn eine neue Anwendung hinzukommt und dies nicht erzwingt) Regel?)
quelle