Zitat von
Hansa:
Wo liegt in diesem Fall der wesentliche Unterschied zwischen Trigger und storede Procedure ? Ein Trigger ist doch auch nichts anderes, als eine spezielle stored Procedure, oder ?
Der Trigger sieht so aus :
SQL-Code:
AS
begin
IF (NEW.ID IS NULL) THEN /* Generatorwert lesen und erhöhen */
NEW.ID = GEN_ID(GEN_DATEN_ID, 1);
IF (NEW.angelegt is NULL) THEN /* Anlegedatum festhalten */
NEW.ANGELEGT = current_timestamp;
IF (NEW.FELD is NULL) THEN /* wegen stored procedure und default */
NEW.FELD = 0;
end
FELD ist dabei, das besagte Feld, bei dem es Ärger mit dem Default gab. Wegen des Generators brauche ich den Trigger so oder so. Macht die zusätzliche Zeile Feld = 0 da überhaupt was aus ?
Nein, ich denke nicht, dass der Trigger hier etwas ausmacht.
Zitat von
Hansa:
Es gibt noch einen Grund für den Trigger. Normalerweise füge ich Daten über die entsprechende SP ein, aber ich habe auch Fälle, in denen das nicht so ist. Z.B. ein Programm, welches alte Daten in die
DB einfügt.
Genau das ist der Grund, weshalb ich dafür plädiere, die Abfrage im Trigger zu machen. Der Trigger ist die Instanz, die direkt auf Tabellenebene dafür sorgen kann, dass keine unerlaubten Daten eingetragen werden. Alles andere kann durch andere Wege (andere Programme oder sogar Programmierer) umgangen werden.
Grüße
Urs