PDA

View Full Version : اشكال در اجراي trigger



tanha_nabash
جمعه 17 خرداد 1387, 14:59 عصر
من براي حساب كردن معدل تريگر نوشتم
جدول ْ GetCourseاطلاعات مربوط به ترم ونمره وشماره درس
جدولAverage بايد هروقت در جدل GetCourse اينسرت شد معدل حساب شود و در اين جدول اينسرت كند اما هر بار كه يك اينسرت(با ترم هاي مختلف) ترم هايي كه قبلا معدل انها حساب شده را دوباره حساب مي كند ودر جدولAverage مي ريزد




CREATE TRIGGER [Averg] ON [dbo].[GetCourse]
after Insert
as
begin
insert into Average
select DISTINCT st_id,term ,(sum(grad*cr_unit)/sum(cr_unit))
from GetCourse
where grad>0.1
group by term ,st_id
end





مقاديري كه در جدول Average اينسرت مي كند



St_is term avge
81 38300 841 20
82 38300 841 20
83 38301 841 20

Arghavan_Reza
یک شنبه 19 خرداد 1387, 13:12 عصر
توصیه : هیچگاه معدل (یا کلا هر فیلدی که تابعی از سایر اطلاعات است) را ذخیره نکنید. هر وقت لازم بود با کوئری مناسب محاسبه کنید.
ضمنا : اگر بخواهید روش خودتان را پیش بگیرید، باید برای Update و Delete هم تریگر بنویسید.
ضمن اینکه امکان اصلاح سایر فیلدها نیز وجود دارد که باید کنترل شود و به دردسرش نمی ارزد.

ASKaffash
یک شنبه 19 خرداد 1387, 13:37 عصر
با سلام
دوست عزیز روش طراحی Trigger شما اشتباه است شما برای delete و I nsert و Update باید trigger طراحی کنید ودرون trigger ازروی جداول deleted و inserted و از روی فیلد کلید برای شخص معدل را حساب کنید وبهتراست اگر اصرار دارید که فیلدداشته باشید درون آن فیلدمقدار را قرار دهید