عندى جدول يتم فيه تخزين كل الحركات على الصنف والكمية الواردة والمنصرفة اريد عمل ترجير عند حدوث حركة على هذا الجدول سواء اضافة او تعديل او حذف يقوم هذا التجر بعمل جمع للكميات المضافة ووضعها فى عمود فى نفس الجدول وكذلك الكميات المنصرفة
ولكم جزيل الشكر
عندى جدول يتم فيه تخزين كل الحركات على الصنف والكمية الواردة والمنصرفة اريد عمل ترجير عند حدوث حركة على هذا الجدول سواء اضافة او تعديل او حذف يقوم هذا التجر بعمل جمع للكميات المضافة ووضعها فى عمود فى نفس الجدول وكذلك الكميات المنصرفة
ولكم جزيل الشكر
سافترض انه لديك جدولين هما Brands و هو يحتوي على الأصناف و الثاني Brands_movement و به حركة الأصناف و هو يحتوي على الأعمدة التالية :
ID
Brand_ID: مرجع للأصناف و مربوط بجدول Brands
brands quantity_in:الكمية الواردة
qantity_out : الكمية المنصرفة
quantity_in_sum : مجموع الكميات الواردة
quantity_out_sum: مجموع الكميات المنصرفة
سنفوم بعمل تريجر يجمع الكميات عند القيام بإدراج حركة جديدة، سيكون التريجر كالآتي:
create trigger brand_trigger on dbo.brands_movement after insert
إنشاء تريجر سيطبق على الجدول brands_movement بعد القيام بعملية الإدخال
as declare @brand_id int declare @qun_in_sum int declare @qun_out_sum int
إعلان ثلاث متغيرات : @brand_id لجلب قيمة brand_id من الجدول @qun_in_sum لجلب الكمية المضافة @qun_out_sum لجلب قيمة الكمية المنصرفة
begin select @brand_id=brand_id from inserted select @qun_in_sum=sum(quantity_in) from brands_movement where brand_id=@brand_id select @qun_out_sum=sum(quantity_out) from brands_movement where brand_id=@brand_id
السطر الثاني سيقوم بجلب brand_id من الصف الذي سيتم الادخال فيه، و السطر الثالث سيقوم بجمع الكمية المضافة على أساس @brand_id و كذلك السطر الرابع
update brands_movement set qun_in_sum=@qun_in_sum,qun_out_sum=@qun_out_sum where brand_id=@brand_id end go
الكود السابق للتعديل على الحقلين quantity_in_sum و quantity_out_sum حيث سيتم جمع الكميات المضافة و وضع القيمة في الحقل quantity_in_sum و وضع ناتج جمع الكميات المنصرفة في الحقل quantity_out_sum لعمل تريجر ينفذ عند التعديل قم فقط بتغيير السطر
after insert
إلى
after update
و مثل ذلك عند الحذف ... اتمنى أن يكون هذا ما تريده.....
تم تعديل هذه المشاركة بواسطة بهاء صلاح الدين فراج في 28 مارس 2010 في 00:21