2017-04-06 2 views
0

Ich versuche, einen INSTEAD OF-Trigger in SQL Server zu erstellen, um zu verhindern, dass zwei Spalten aktualisiert werden, es sei denn, die andere wird zur gleichen Zeit aktualisiert. Jede Hilfe wäre willkommen.Überprüfen Sie, ob zwei Spalten gleichzeitig aktualisiert werden

CREATE Trigger Validation1 
ON tblCust 
INSTEAD OF UPDATE 
AS 
BEGIN 
    <NEW.CustomerAge> = <OLD.CustomerAge> or <NEW.CustomerRange> = <OLD.CustomerRange> 
    <RAISE EXCEPTION> 
    END IF; 
END; 
+0

Haben Sie eine bestimmte Frage? Es gibt viele Ressourcen online und im SQL Server SSMS-Vorlagen-Explorer, um einen Trigger zu erstellen. – dfundako

Antwort

1

verhindern, dass zwei Felder aktualisiert werden, es sei denn der andere gleichzeitig aktualisiert

Sie UPDATE() in nach Abzug oder vor dem Trigger verwenden könnte

IF (UPDATE (col1) and UPDATE (col2)) 
BEGIN 
--your logic for both col1 updated at same time 
END; 
else 
begin 
--other logic 
end 

Wie von PMB Austin in Kommentaren hervorgehoben, können Sie in der If-Logik nachsehen, ob der aktualisierte Wert gleich dem Wert ist, und ihn basierend auf Ihrem Logi behandeln c, ob Sie das als Update behandeln oder nicht

+1

Das funktioniert, aber es ist auch möglich, auf den gleichen Wert zu aktualisieren ... Wenn Sie THAT sperren möchten (dh beide Spalten müssen CHANGE, nicht nur zugewiesen werden), können Sie einen INNER JOIN zwischen eingefügtem und gelöschtem WHERE i.col1 testen <> d.col1 UND i.col2 <> d.col2. – pmbAustin

+0

@pmbAustin: Das ist toll Punkt, ich werde das hinzufügen – TheGameiswar

Verwandte Themen