![]() |
|
[SQL] القوادح و طريقة عملها و الفائدة منها - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم مقالات SQL SERVER (http://vb4arb.com/vb/forumdisplay.php?fid=84) +--- الموضوع : [SQL] القوادح و طريقة عملها و الفائدة منها (/showthread.php?tid=15829) |
القوادح و طريقة عملها و الفائدة منها - ابو ليلى - 16-05-16 بسم الله الرحمن الرحيم السلام عليكم و رحمة الله ساتحدث في هذه المقال عن معلومة مفيدة تختص بالقوادح (Triggers) و الفائدة من استخدامها القوادح 3 انواع DML , DDl , LOGON في هذه المقالة سوف اتحدث عن النوع DML TRIGGERS وفق مثال عملي مباشر للوصول الى الفائدة المرجوة قد تحتاج في بعض الاحيان الى وجود عمليات يقوم بها السيرفر في الخلفية نيابة عنك , و هذه العمليات تعتمد على اجراء ما قام به المستخدم مثال ان يقوم المستخدم باضافة و تعديل او حذف لاي سجل في اي جدول (حديثي سيقتصر هنا على الجدول او الاستعلام) عندها سيقوم القادح بالتصرف وفق نوع العملية التي بني من اجلها DML TRIGGERS تقسم الى نوعين 1ِِِ- AFTER TRIGGERS و احيانا تسمى FOR TRIGGERS 2- INSTEAD OF TRIGGERS النوع الاول ياتي بعد القيام بالعملية , بمعنى ان القادح سيعمل بعد القيام بعملية(الاضافة او التحديث او الحذف) النوع الثاني ياتي مترافقا مع العملية (الاضافة و التعديل و الحذف) و هنا سوف اتحدث عن النوع الاول FOR TRIGGERS و لنبدأ مباشرة بمثال عملي لدي جدولين الاول يحتوي على اربعة حقول كما هو واضح بالصورة و الثاني يحتوي على حقلين كما يلي ناتي اولا الى التعرف على طريقة انشاء القادح الشكل القواعدي لانشاء القادح كما يلي PHP كود : Create Trigger Trigger_Nameكود سهل و خفيف و لذيذ طبعا نعطي اسم معبر للقادح و نحدد اسم الجدول الذي يعمل عليه القادح و ثم نحدد العملية التي سيعمل بعدها القادح (For Insert , For Delete , For Update) كلام جميل و ماذا بعد ؟؟؟ لندخل في المضمون بشكل مباشر , الان نريد انشاء قادح مهمته تاتي بعد اي عملية اضافة يقوم بها المستخدم . اريد من القادح ان يقوم باضافة تفصيل في الجدول EmpEdit (لكل حركة اضافة جديدة يقوم بها المستخدم على الجدول الاول EMP) كما هو لدي في الجدول الثاني EmpEdit حقلين الاول ساخزن به Id الخاص بالحقل الذي جرت عليه العملية و الحقل الثاني ساخزن فيه نوع الحركة التي تمت على السجل و هي هنا الاضافة الذي ساحتاج اليه هو الحصول على السجل المضاف او المعدل او حتى المحذوف و من ثم تخزينه في الجدول الثاني لكن كيف لي ان اعرف اي سجل اضيف او حذف او عدل ؟؟؟ من الامور الجميلة في SQL SERVER ان هناك جدول خاص و سحري لكل عملية تجري فلدينا جدول اسمه INSERTED يقوم بتخزين عمليات الاضافة و هو مشابه في التصميم للجدول الذي بني عليه اقصد هنا العبارة (On Table_Name) التي وردت في الكود السابق. و كذلك لدينا جدول اسمه DELETED و جدول UPDATED انتبه هذه الجدوال موجودة فقط او بعبارة اخرى يتم توليدها فقط ضمن بلوك TRIGGERS فقط , اذ لا يمكنك الوصول اليها من خارج البلوك الخاص بـ TRIGGERS هذا رائع : اذا سيصبح لدينا جدول لكل حالة يقوم بها المستخدم و بالتالي ساقوم فقط باستيراد البيانات من هذه الجداول و تخزين الحالة (حالة العملية التي قام بها المستخدم) في حالتنا هنا سنقوم باضافة السجل الجديد الذي قام باضافته المستخدم لنرى الكود كيف سيصبح مع حالة الاضافة PHP كود : Create Trigger Tr_ForInsertedTr_ForInserted : هو اسم القادح On Emp : هو اسم الجدول الذي سيعمل عليه القادح For Insert :القادح سيعمل بعد عملية الاضافة كلام سهل و واضح , و ماذا بعد , الكود فارغ و القادح لا يؤدي اي عملية ؟؟ لنعود الى كلامنا : المطلوب هو ادخال رقم Id ,ونوع العملية التي جرت في الجدول EmpEdit (دعنا ندخل تاريخ العملية ايضا) اذا مهمتنا تنحصر في معرفة رقم Id من الجدول Inserted , و كذلك تسجيل معلومة كما يلي (تمت الاضافة بتاريخ ؟) بالنسبة للتاريخ يمكننا الحصول عليه من توابع التاريخ الخاصة SQL SERVER التابع (GetDate) اكتملت المهمة لنرى الكود كيف اصبح PHP كود : Create Trigger Tr_ForInsertedDeclare @Id int : تعريف متغير رقمي ٍSelect @Id =Id From Inserted : الحصول على رقم Id من الجدول Inserted و من ثم جملة ادخال عادية تقوم باضافة سطر جديد الى الجدول EmpEdit Cast : نستخدمه للتحويل بين الانواع الان اعمل تنفيذ ليتم تخزين القادح , القادح سيظهر في بند TRIGGERS الخاص بالجدول الان حاول اضافة اي اسطر جديدة الى الجدول Emp و تفقد بعدها الجدول EmpEdit هذه المقالة فقط للتعريف بالقوادح و فائدتها , يمكنك التوسع في الموضوع و اجراء عمليات بعد الحذف كأن تقوم بتخزين السجلات المحذوفة و تاريخ حذفها و ان تربط معها كذلك اسم المستخدم الذي حذفها الافكار كثيرة و القوادح مفيدة تعطيك قوة و مرونة و توفر عليك الكثير من الجهد بالتوفيق للجميع RE: القوادح و طريقة عملها و الفائدة منها - myalsailamy - 16-05-16 شاكر لك الطرح المفيد ،، استمتعت بقراءته RE: القوادح و طريقة عملها و الفائدة منها - الكاتب - 30-05-16 شكرا على المعلومات اخي |