Ich schreibe einen Trigger zum Steuern einer Spalte. Das Skript funktioniert wie ich will, aber mein Problem ist im Raisefehler. Ich möchte, dass der Auslöser funktioniert, ohne dem Benutzer die Fehlermeldung anzuzeigen.Eine Ausführung eines Triggers ohne Box-Nachricht unterbrechen (tsql)
Kann jemand wer weiß, was das Äquivalent von raiseerror ist, ohne die Fehlermeldung dem Benutzer zu zeigen?
Ich versuchte mit Rollback-Transaktion, die mir stattdessen eine andere Fehlermeldung, und ich versuchte mit Rückkehr, die die Ausführung des Triggers nicht unterbrochen.
Das ist mein Auslöser:
DECLARE @val varchar(9)
SELECT @val= [DC_Piece]
from INSERTED
where INSERTED [DC_Domaine]=0 and INSERTED.[DC_IdCol]=6
IF UPDATE([DC_Piece])
BEGIN
IF NOT EXISTS(select [DO_PIECE]
from DOCEN
where @val= [DO_Piece] and [DO_Domaine]=0 and [DO_Type]=6)
RAISERROR('STOP',11,1)
END
Bitte helfen Sie mir
Ihre Trigger hat ** MAJOR ** Fehler, dass Sie scheinen anzunehmen, es einmal aufgerufen werden, werden ** pro Zeile ** - das ist ** nicht * * der Fall. Der Trigger wird ** einmal pro Anweisung ** ausgelöst. Wenn also Ihre INSERT-Anweisungen 25 Zeilen einfügen, erhalten Sie den Trigger einmal ** ausgelöst, aber dann enthält "Insert" 25 Zeilen. Welche dieser 25 Zeilen wird Ihr Code hier auswählen? 'SELECT @ val = [DC_Piece] von INSERTED' - es ist nicht deterministisch - Sie erhalten * eine beliebige * Zeile, und Sie ** ignorieren ** alle anderen! Sie müssen Ihren Trigger neu schreiben, um dies zu berücksichtigen! –
Okay, können Sie mir ein Beispiel geben pleaze – hollyx
Siehe meine Antwort –