2017-04-06 77 views
0

我試圖在SQL Server中創建一個INSTEAD OF觸發器,以防止更新兩列,除非另一列同時更新。任何幫助,將不勝感激。檢查兩列是否同時更新

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

您有具體問題嗎?有大量的資源可以在SQL Server SSMS模板資源管理器中在如何進行觸發。 – dfundako

回答

1

防止兩個領域,除非另一種是在同一時間更新

你可以觸發後或觸發

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

之前使用UPDATE()而更新正如PMB Austin在評論中指出的那樣,您可以在If邏輯中進一步檢查以查看,如果更新後的值與value相同並根據您的logi處理c,您是否將其視爲更新或不更新

+1

這可以工作,但也可以更新到相同的值...如果你想阻止THAT(即兩個列必須改變,而不僅僅是分配),你可以測試插入和刪除之間的INNER JOIN WHERE i.col1 <> d.col1 AND i.col2 <> d.col2。 – pmbAustin

+0

@pmbAustin:這很棒,我會補充說 – TheGameiswar