我在MsSQL中遇到了INSTEAD OF觸發器問題。我有一個應用程序出現了一些錯誤,作爲一個快速的解決方法,我不希望用戶修改數據庫中的一個確切的行。 我創建了以下觸發:(上表)MsSQL DB上的INSTEAD OF UPDATE觸發器的默認操作
create trigger UglyWorkaround ON Configuration instead of update
as
begin
if (select COUNT(1) from inserted where Key='Key01' and Value<>'2') > 0 begin
update Configuration set Value='2' where Key='Key01'
end else begin
-- DEFAULT ACTION (do update as intended)
end;
end;
但我有問題,確定如何設置默認操作。 Update Configuration set Value=inserted.Value where Key=inserted.Key
不適合我。有什麼辦法如何用觸發器做到這一點? (我知道解決的辦法是不好的,但我沒有其他的選擇,因爲我現在不能更改密碼。)
你說你**不**要修改特定行,但你的代碼當Key ='Key01''時改變'Value'。 – Tony
它改變了價值回來的情況下,用戶將其改變爲我想要的其他值。也許我沒有明白觸發器的原理 – nothrow
@Yossarian,你使用'而不是update'觸發器,所以SQL Server不會更新那行,你不需要擔心把它改回來。 –