我已經表列
studentId
,
studentName
,
markOne
,
markTwo
,
total
。在下列情況下,我可以使用存儲過程而不是觸發器嗎?
我加入markOne
和markTwo
.. 每當我更新自動更新total
領域的標誌中的任何一個創建的觸發器來計算total
。
ASK:
但可以使用存儲過程也是爲什麼我們去觸發,而不是存儲過程來實現這個過程?
我已經表列
studentId
,
studentName
,
markOne
,
markTwo
,
total
。在下列情況下,我可以使用存儲過程而不是觸發器嗎?
我加入markOne
和markTwo
.. 每當我更新自動更新total
領域的標誌中的任何一個創建的觸發器來計算total
。
ASK:
但可以使用存儲過程也是爲什麼我們去觸發,而不是存儲過程來實現這個過程?
爲什麼要使用存儲過程或觸發器?最好的解決方法是使用一個計算列:
alter table t add total as (markOne + markTwo);
當你表示total
這將正確計算值。
注意:您需要從表格中刪除表格或重新創建沒有實際列的表格。
在您的情況下,您不需要觸發器。您只想更新總字段,因此不要使用觸發器。
觸發器在這種情況下使用,當您爲markone,marktwo添加數據時,它會影響很多表。在超過2-3個表中,您需要在兩個字段上更新數據庫。然後您可以使用觸發器。在你的情況下,你可以簡單地使用存儲過程。
謝謝。
您可以爲此創建一個視圖,因此您不必更改表格。
create view vwMyTable as
select studentId,
studentName,
markOne,
markTwo,
(markOne + markTwo) as Total
from myTable
然後,你可以簡單地做
select * from vwMyTable
觸發自動調用時任何更新happened.But在存儲過程的情況下,我們也許應該叫manually.this的原因之一。 – yuvi
一般而言,我只會在沒有其他選擇或出於審計目的時才使用觸發器。 Gordon提供的答案是最好的辦法。 –