2016-10-21 27 views
0

我已經表列
studentId
studentName
markOne
markTwo
total在下列情況下,我可以使用存儲過程而不是觸發器嗎?

我加入markOnemarkTwo .. 每當我更新自動更新total領域的標誌中的任何一個創建的觸發器來計算total

ASK:
但可以使用存儲過程也是爲什麼我們去觸發,而不是存儲過程來實現這個過程?

+0

觸發自動調用時任何更新happened.But在存儲過程的情況下,我們也許應該叫manually.this的原因之一。 – yuvi

+0

一般而言,我只會在沒有其他選擇或出於審計目的時才使用觸發器。 Gordon提供的答案是最好的辦法。 –

回答

4

爲什麼要使用存儲過程或觸發器?最好的解決方法是使用一個計算列:

alter table t add total as (markOne + markTwo); 

當你表示total這將正確計算值。

注意:您需要從表格中刪除表格或重新創建沒有實際列的表格。

0

在您的情況下,您不需要觸發器。您只想更新總字段,因此不要使用觸發器。

觸發器在這種情況下使用,當您爲markone,marktwo添加數據時,它會影響很多表。在超過2-3個表中,您需要在兩個字段上更新數據庫。然後您可以使用觸發器。在你的情況下,你可以簡單地使用存儲過程。

謝謝。

0

您可以爲此創建一個視圖,因此您不必更改表格。

create view vwMyTable as 
    select studentId, 
     studentName, 
     markOne, 
     markTwo, 
     (markOne + markTwo) as Total 
    from myTable 

然後,你可以簡單地做

select * from vwMyTable 
相關問題