اخواني هذا درس عن DML Triggers ان شاء الله يكون مفهوم والشرح جيد ... وياريت لو في أي شىء فيه مشكله خبروني :happy:
إن شاء الله الدرس القادم DDL Triggers
اخواني هذا درس عن DML Triggers ان شاء الله يكون مفهوم والشرح جيد ... وياريت لو في أي شىء فيه مشكله خبروني :happy:
إن شاء الله الدرس القادم DDL Triggers
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
ايه ياشباب الشرح جيد ولا ايه ..............عشان أكمل الجزء الثاني
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
مقال واضح ومفيد ، الله يعافيك .
لكن كنت أتمنى أن يكون مكتوب في الموضوع نفسه وليس كملف PDF ، حنتى يمكن للأعضاء أن يصلوا إليه عن طريق Google أو محرك البحث في المنتدى ، خاصة أن المقال حجمه مناسب .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
السلام عليكم
الشرح ممتاز
لكن لو امكن ان تتكلم وتكمل عن الجدولين inserted و deleted حتى يستوفي هذا الموضوع حقه
:P أخيرا ...............مشكور اخواني على التشجيع وان شاء الله حعمل الدرس في المنتدى أيضا ححاول أشرح جداول الinserted و deleted أكثر من الشرح الحالي لكي تعم الفائدة
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
Triggers
التعريف :
وهي عبارة عن مجموعه من الأوامر التي تنفذ بمجرد حدوث حدث معين سواء على السيرفر أو قاعدة البيانات أو على جدول .
الأنواع :
1- DML Triggers: وهي مجموعه الأوامر التي تنفذ بشكل تلقائي بمجرد حدوث الإضافة أو الحذف أو التعديل على جدول معين.
- الصيغه العامة :
- طريقة الانشاء :
ملحوظة : بعض الجداول المستخدمه في الأمثله موجوده بقاعدة البيانات AdenvtureWorksDW2008
أيضا سيتم إنشاء جدول Test على هذه القاعده .
1- في حالة الإضافة :
- في حالة After :
في هذه الحالة نريد بعد إضافة عمله جديدة في جدول DimCurrency يتم إضافة سجل جديد في جدول Test بشكل أوتوماتيك .
الان بعد تنفيذ الكود السابق يتم إضافة سجل جديد في جدول العملات
تم إضافة سجل جديد بجدول Test
- في حالة Instead of :
في هذه الحالة نريد عند إضافة عمله جديدة في جدول العملات يتم حذف سجل العملهUSD من جدول العملات ويتم التراجع عن إضافة العمله الجديدة.
الان بعد تنفيذ الكود السابق يتم إضافة سجل جديد في جدول العملات
لم يتم الاضافة وتم حذف السجل الخاص بالعملهYer
2- في حالة التعديل :
في هذه الحالة نريد عند تعديل سجل في جدول العملات يتم إضافة سجلين في الجدول Test السجل الأول نوع العمليه والسجل الثاني رمز العمله التي تم تعديلها.
الان بعد تنفيذ الكود السابق يتم تعديل سجل ما وليكن سجل عمله السعودية
أنظر كيف بعد تنفيذ الكود السابق تم التعديل السجل في جدول العملات أيضا تم إضافة سجلين في الجدول Test
هناك توضيح :
في حالة عمل Trigger على الجدول أو view يتم إنشاء جداول من قبل الــsql engine حيث يمكن إستخدامها في الحالات الأتيه:
1- في حالة الإضافه :عندما نريد تصميم Trigger على الحدث insert فأنه عندما نقوم بإضافة سجل جديد على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Inserted وهو يحتوي على نسخة من السجل الجديد .
2- في حالة التعديل : عندما نريد تصميم Trigger على الحدث Update فأنه عندما نقوم بتعديل السجل المراد تعديله على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Inserted وهو يحتوي على النسخة من السجل الحالي .أيضاً يقوم بإنشاء جدول يسمى Deleted وهو يحتوي على النسخة السابقة من السجل .
3- في حالة الحذف : عندما نريد تصميم Trigger على الحدث Delete فأنه عندما نقوم بحذف السجل المراد حذفه على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Deleted وهو يحتوي على النسخة من السجل الحالي .
- حذف وتعديل الـــTriggers :
1- الحذف :
- عن طريق object Explorer :
- عن طريق الكود :
2- التعديل :
- عن طريق object Explorer :
- عن طريق الكود :
- إيقاف / تشغيل الTrigger :
1- عن طريق object Explorer :
2- الكود :
- طريقة جلب معلومات عن الــTriggers :
ولمعرفة المزيد على هذا الsystem view إضغط هنا
ملحوظة : يمكن إنشاء الTrigger على جميع الاحداث ( insert/ delete / update)
DDL Triggers :
وهي مجموعه الأوامر التي تنفذ بشكل تلقائي بمجرد حدوث حدث معين على كائنات قاعدة البيانات كعندما نضيف جدول للقاعدة أو في حالة حدوث حدث معين على السيرفر حيث أنها مخصصه فقط لأوامر الDDL .
الصيغه :
حيث أن هذا النوع ينفذ بعد إحداث الحدث ومن أمثله الأحداث :
على مستوى السيرفر –Server Level :
على مستوى قاعدة البيانات –Database Level :
ملحوظة : هذا النوع لايطبق على الكائنات المؤقته سواء كائنات Local أو Global .
- مثال تطبيقي على قاعدة البيانات:
حيث ان المثال السابق يعني ان في حالة حذف جدول أو تعديل جدول يتم طباعة رسالة ( التي باللون الأحمر) ويتم التراجع عن هذه العمليه.
- مثال تطبيقي على السيرفر :
حيث ان المثال السابق يعني أن في حالة إنشاء قاعدة بيانات جديدة على السيرفر يتم طباعة رسالة HI بعد الإنشاء.
- حذف وتعديل Server Scope Triggers :
-الحذف :
- عن طريق object Explorer :
- عن طريق الكود :
- التعديل :
- عن طريق الكود :
- حذف وتعديل Database Scope Triggers :
-الحذف :
-عن طريق Object Explorer :
-عن طريق الكود :
-التعديل:
- إيقاف / تشغيل Server Scope Triggers:
-عن طريق object Explorer :
- الكود :
- إيقاف / تشغيل Database Scope Triggers:
-عن طريق object Explorer :
- الكود :
إستخدامEventData Function :
تستخدم هذه الدالة مع الــDDL Triggers لجلب بيانات عن الــحدث الذي تم تشغيله على صورة بيانات XML ومنها :
1- وقت إطلاق الحدث.
2- نوع الحدث الذي يتم إطلاقه.
3- كود الــSession اللي قامت بإطلاق الحدث ( SPID).
مثال على البيانات التي تعرض :
الناتج :
أخيرا اخواني ارجو أن قد أوضحت الــTriggers بشكل مفهوم لانه موضوع مهم جداَ ... :)
تم تعديل هذه المشاركة بواسطة medo_Programming في 24 مايو 2011 في 18:58
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
ولااروع من هذا الشرح بالتفصيل
شكرا
جزاك الله خير شرح ولا اروع
كان عندي استفسار :
اريد استخدام هذه الاداة مع قاعدة بيانات تحتوي على 60 جدول بحجم ما يقارب 1.5 جيجا
مع كل الجدوال . لكي اقوم بعملية ربط بين اثنين من قواعد البيانات . اذا حدث تغير في احدها يتم التغير على الاخرى
السوال هل تتأثر كفائة الاداة مع استخدام موسع لها ؟؟
اكيد طبعا حتتأثر ولكن على حسب مواصفات الserver و كمية التحديثات المراد تحديثها ......لو عايز تعرف الPerformance للسيرفر ممكن تستخدم SQL SERVER PROFILER
بس انا انصحك انك تستخدم الMirroring او الreplication لانهم تقنيات خاصة بData Availability
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------: