Ich habe das Gefühl, das ist vielleicht nicht möglich, aber hier geht ...Handle Fehler in SQL-Trigger ohne fehlgeschlagene Transaktion?
Ich habe eine Tabelle, die einen Insert-Trigger hat. Wenn Daten in diese Tabelle eingefügt werden, löst der Trigger eine lange varbinäre Spalte aus und analysiert sie. Dieser Trigger führt einige Operationen an den Binärdaten durch und schreibt mehrere Einträge in eine zweite Tabelle.
Was ich kürzlich entdeckt habe, ist, dass manchmal die binären Daten nicht "korrekt" sind (dh es entspricht nicht der Spezifikation, die es haben soll - ich habe KEINE Kontrolle darüber) und dies kann Casting-Fehler usw. verursachen.
Meine erste Reaktion war es, Dinge in TRY/CATCH-Blöcke zu wickeln, aber es scheint, dies ist auch keine Lösung, da die Ausführung des CATCH bedeutet die Transaktion ist zum Scheitern verurteilt und ich bekomme einen Fehler "Transaktion in Trigger".
Was ist wichtig ist, dass die Daten noch in die ursprüngliche Tabelle geschrieben werden. Es ist mir egal, ob die Daten in die zweite Tabelle geschrieben werden oder nicht.
Ich bin mir nicht sicher, ob ich das schaffen kann oder nicht und würde dankbar jeden Rat erhalten.
Einen Versuch wert, danke für die Idee. – Valerion
Ja, diese Idee funktionierte großartig - eine kleine Funktion, um jedes Zeichen zu überprüfen, ob es in '1', '2', '3' usw. ist - wenn es zu irgendeinem Zeitpunkt nicht zurückgegeben wird, wird es sonst 0 zurückgeben gib das Ergebnis der Besetzung zurück. Scheint, den Job gut zu machen! – Valerion
@Valerion - Sie können auch die Funktion IsNumeric() aufrufen, aber für Ihre Bedürfnisse ist sie möglicherweise zu locker. – ahains