2016-10-21 2 views
0

私は、列
studentIdstudentName
markOne
markTwo

totalテーブルをしました。以下のケースではなく、ストアドプロシージャを使用できますか?

私はそれが自動的にtotalフィールドを更新マークのいずれかを更新するたびに.. をmarkOnemarkTwoを追加することにより、totalを計算するトリガーを作成しました。
しかし、このプロセスはまた、我々は、トリガのために行く理由は、代わりにストアドプロシージャをストアドプロシージャを使用して達成することができます。

はASK?

+0

トリガーを行うことができますストアドプロシージャの場合、すべての更新happened.But我々は多分理由の1をmanually.thisを呼び出す必要があるときに自動的に起動します。 – yuvi

+0

一般的に私はあなたが他の選択肢がないとき、または監査目的のためにのみトリガを使用します。 Gordonが提供する答えは、あなたのケースに入る最善の方法です。 –

答えて

4

なぜストアドプロシージャまたはトリガを使用しますか?あなたはtotalを参照するたびにこれが正しく値を計算します

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

:最善の解決策は、計算列を使用することです。

注:実際の列を使用せずにテーブルをテーブルから削除するか、テーブルを再作成する必要があります。

0

条件では、トリガーは必要ありません。トータルフィールドのみを更新したいので、トリガーは使用しないでください。

markoneのデータを追加するときに、このような状態でトリガを使用すると、多くのテーブルに影響します.3つ以上のテーブルでは、2つのフィールドでデータベースを更新する必要があります。あなたの場合は、単にストアドプロシージャを使用することができます。

ありがとうございました。

0

このためのビューを作成することができますので、テーブルを変更する必要はありません。

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

その後、あなたは、単に

select * from vwMyTable 
関連する問題