السلام عليكم
اريد ان اكتب تريغر عند التعديل على حقل ما في جدول بحيث يأخذ القيمة قبل التعديل ويطرحها من القيمة الجديدة والفرق يضيفها الى حقل اخر في جدول اخر
وشكرا للمساعدة
السلام عليكم
اريد ان اكتب تريغر عند التعديل على حقل ما في جدول بحيث يأخذ القيمة قبل التعديل ويطرحها من القيمة الجديدة والفرق يضيفها الى حقل اخر في جدول اخر
وشكرا للمساعدة
السلام عليكم
[ CREATE TRIGGER Trigger_Name ON Table_Name AFTER UPDATE AS BEGIN SET NOCOUNT ON; declare @old as int declare @New as int select @old = FieldName from deleted select @new =FieldName from inserted update OtherTable set SomeField = @New -@old END
يوضع هذا على الجدول الذي به القيم والتي ستتعدل
عليك بتغيير اسماء الجدوال والحقول وتغيير نوع الحقل وفحص القيم والتأكد منها بما يناسبك وافترض ان صف واحد فقط تعدل
وللعلم ايضا
الجدول deleted هو جدول وهمي به القيم السابقة التي تعدلت ومطابق للجدول الاصلي
الجدول inserted هو جدول وهمي به القيم الجديدة ومطابق للجدول الاصلي
تم تعديل هذه المشاركة بواسطة TareqVB في 25 مايو 2008 في 08:08
جزاك الله خيرا
والله يبارك فيك
حللت لي مشكلة كبيرة بالنسبة لي
بســم الله الـرحمــن الرحيــم
create trigger (trigger name ) on (table name)
for update
as
update (table name)
set (row name) = inserted.(row name ) - deleted.(row name)
from inserted,deleted;
الشرح بسيط
بنشأ تريجر اسمه كذا على التابل اللى اسمه كذا
بعد الابديت
ابديت التابل اللى اسمه كذا
خلى الرو = الرو اللى دخلته - الرو اللى اتمسح (القديم) بس
من الاتنين تابل اللى هم inserted , deleted
شرح اكثر دقه بالنسبه لنقطه معينه
لما بعمل تريجر على تابل معين مش لازم لما اجى اكتب اسم اى رو جواه اكتب قبليه اسم التابل
يعنى لو عملت تريجر على تابل اسمه احمد وفيه رو اسمه اى دى
يبقى لما اجى احطه فى اى معادله اكتب اى دى على طول مش لازم اعمل ahmed.ID
لكن لو فى المعادله بتاعتك انك مثلا
عندك فى التابل بتاعنا اللى اسمه احمد رو اسمه كميه
quantity
وعايز تطرح منها مثلا كميه من تابل اسمه محمد يبقى لازم تكتب محمد قبل كمييه
mohamed.quantity
يبقى المعادله هاتكون
set quantity = quantity - mohamed.quantity
وفى الاخر لازم تعرفه التابل بتاع محمد ده يعنى هاتيجى فى الاخر وتقوله
from mohamed بس
مش هانكتب from mohamed , ahmed
لان التريجر اصلا معمول على التابل احمد يبقى كده كده هو فاهم اننا فيه يبقى مش هاتكتبه هانكتب اى تابل تانى دخل فى المعادله
شرح لحته تانيه
انا فى الكود الاولانى جيت كتبت فى الاخر
from inserted,deleted ;
ايه الكلام ده بقه
دول ياسيدى تابلز وهمين
مش فاهم
اقولك
لما تيجى تدخل اول مره فى الرو مثلا دخلت 5 يبقى التابل اللى اسمه انسرتيد ده القيمه بتاعته بتساوى خمسه
طيب لما اجى اعمل ابديت للقيمه اللى خمسه ايه اللى يحصل
لما اجى اعمل ابديت للقيمه مثلا عملت ابديت وخليت الرو 10 دلوقتى كده كانك مسحت الخمسه ودخلت رقم جديد اللى هو 10
كده يبقى التابل بتاع ديليتيد بقه بخمسه والانسرتيد بقه بعشره
يبقى المعادله بتاعتك اللى انت عايزها
خلى قيمه الروو = القيمه الجديده اللى لسه داخله - القيمه القديمه اللى اتمسحت
راجع الكود
ويارب اكون وصلت اللى انت عايزه
معلومه دى اول مشاركه ليه لو فيه اى غلطات ياريت تقولهالى وتقولولى حلها بالنسبه للموضوع

هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…