الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس عن DML Triggers

بدأه MS_SQL في 17 مايو 2011 · 8 رد · 8,131 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني هذا درس عن DML Triggers ان شاء الله يكون مفهوم والشرح جيد ... وياريت لو في أي شىء فيه مشكله خبروني :happy:

إن شاء الله الدرس القادم DDL Triggers

Triggers.pdf

3

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#2

ايه ياشباب الشرح جيد ولا ايه ..............عشان أكمل الجزء الثاني

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#3

مقال واضح ومفيد ، الله يعافيك .

لكن كنت أتمنى أن يكون مكتوب في الموضوع نفسه وليس كملف PDF ، حنتى يمكن للأعضاء أن يصلوا إليه عن طريق Google أو محرك البحث في المنتدى ، خاصة أن المقال حجمه مناسب .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

:P أخيرا ...............مشكور اخواني على التشجيع وان شاء الله حعمل الدرس في المنتدى أيضا ححاول أشرح جداول الinserted و deleted أكثر من الشرح الحالي لكي تعم الفائدة

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#6

Triggers

التعريف :

وهي عبارة عن مجموعه من الأوامر التي تنفذ بمجرد حدوث حدث معين سواء على السيرفر أو قاعدة البيانات أو على جدول .

الأنواع :

1- DML Triggers: وهي مجموعه الأوامر التي تنفذ بشكل تلقائي بمجرد حدوث الإضافة أو الحذف أو التعديل على جدول معين.

- الصيغه العامة :

post-126189-016857400 1306249636_thumb.p

- طريقة الانشاء :

ملحوظة : بعض الجداول المستخدمه في الأمثله موجوده بقاعدة البيانات AdenvtureWorksDW2008

أيضا سيتم إنشاء جدول Test على هذه القاعده .

post-126189-047010200 1306249637_thumb.p

1- في حالة الإضافة :

- في حالة After :

في هذه الحالة نريد بعد إضافة عمله جديدة في جدول DimCurrency يتم إضافة سجل جديد في جدول Test بشكل أوتوماتيك .

post-126189-011577000 1306249639_thumb.p

الان بعد تنفيذ الكود السابق يتم إضافة سجل جديد في جدول العملات

post-126189-064002500 1306249640_thumb.p

تم إضافة سجل جديد بجدول Test

post-126189-025855700 1306249645_thumb.p

- في حالة Instead of :

في هذه الحالة نريد عند إضافة عمله جديدة في جدول العملات يتم حذف سجل العملهUSD من جدول العملات ويتم التراجع عن إضافة العمله الجديدة.

post-126189-003517900 1306249647_thumb.p

الان بعد تنفيذ الكود السابق يتم إضافة سجل جديد في جدول العملات

post-126189-051684500 1306249648_thumb.p

لم يتم الاضافة وتم حذف السجل الخاص بالعملهYer

post-126189-074161600 1306249653_thumb.p

2- في حالة التعديل :

في هذه الحالة نريد عند تعديل سجل في جدول العملات يتم إضافة سجلين في الجدول Test السجل الأول نوع العمليه والسجل الثاني رمز العمله التي تم تعديلها.

post-126189-077397700 1306249655_thumb.p

الان بعد تنفيذ الكود السابق يتم تعديل سجل ما وليكن سجل عمله السعودية

post-126189-056886800 1306249657_thumb.p

أنظر كيف بعد تنفيذ الكود السابق تم التعديل السجل في جدول العملات أيضا تم إضافة سجلين في الجدول Test

post-126189-099862500 1306249683_thumb.p

هناك توضيح :

في حالة عمل Trigger على الجدول أو view يتم إنشاء جداول من قبل الــsql engine حيث يمكن إستخدامها في الحالات الأتيه:

1- في حالة الإضافه :عندما نريد تصميم Trigger على الحدث insert فأنه عندما نقوم بإضافة سجل جديد على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Inserted وهو يحتوي على نسخة من السجل الجديد .

post-126189-043156600 1306250081_thumb.p

2- في حالة التعديل : عندما نريد تصميم Trigger على الحدث Update فأنه عندما نقوم بتعديل السجل المراد تعديله على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Inserted وهو يحتوي على النسخة من السجل الحالي .أيضاً يقوم بإنشاء جدول يسمى Deleted وهو يحتوي على النسخة السابقة من السجل .

post-126189-035183800 1306250104_thumb.p

3- في حالة الحذف : عندما نريد تصميم Trigger على الحدث Delete فأنه عندما نقوم بحذف السجل المراد حذفه على الجدول الذي تم عليه الTrigger فإن الــsql engine يقوم بعمل جدول مؤقت نستطيع ان نتعامل معاه في داخل كود الTrigger فقط حيث أن هذا الجدول يحتوي على نفس حقول الجدول الذي تم عليه الـــTrigger ويسمى هذا الجدول Deleted وهو يحتوي على النسخة من السجل الحالي .

post-126189-042500900 1306250098_thumb.p

- حذف وتعديل الـــTriggers :

1- الحذف :

- عن طريق object Explorer :

post-126189-071360700 1306249689_thumb.p

- عن طريق الكود :

post-126189-052145100 1306249691_thumb.p

2- التعديل :

- عن طريق object Explorer :

post-126189-078157400 1306249697_thumb.p

- عن طريق الكود :

post-126189-052531100 1306249699_thumb.p

- إيقاف / تشغيل الTrigger :

1- عن طريق object Explorer :

post-126189-025544400 1306249705_thumb.p

2- الكود :

post-126189-013664800 1306249707_thumb.p

- طريقة جلب معلومات عن الــTriggers :

post-126189-063472800 1306249708_thumb.p

ولمعرفة المزيد على هذا الsystem view إضغط هنا

ملحوظة : يمكن إنشاء الTrigger على جميع الاحداث ( insert/ delete / update)

DDL Triggers :

وهي مجموعه الأوامر التي تنفذ بشكل تلقائي بمجرد حدوث حدث معين على كائنات قاعدة البيانات كعندما نضيف جدول للقاعدة أو في حالة حدوث حدث معين على السيرفر حيث أنها مخصصه فقط لأوامر الDDL .

الصيغه :

post-126189-035758000 1306249711_thumb.p

حيث أن هذا النوع ينفذ بعد إحداث الحدث ومن أمثله الأحداث :

على مستوى السيرفر –Server Level :

post-126189-072732900 1306250462_thumb.p

على مستوى قاعدة البيانات –Database Level :

post-126189-092856900 1306249714_thumb.p

post-126189-049298400 1306249746_thumb.p

ملحوظة : هذا النوع لايطبق على الكائنات المؤقته سواء كائنات Local أو Global .

- مثال تطبيقي على قاعدة البيانات:

post-126189-046419100 1306249748_thumb.p

حيث ان المثال السابق يعني ان في حالة حذف جدول أو تعديل جدول يتم طباعة رسالة ( التي باللون الأحمر) ويتم التراجع عن هذه العمليه.

- مثال تطبيقي على السيرفر :

post-126189-034460100 1306249750_thumb.p

حيث ان المثال السابق يعني أن في حالة إنشاء قاعدة بيانات جديدة على السيرفر يتم طباعة رسالة HI بعد الإنشاء.

- حذف وتعديل Server Scope Triggers :

-الحذف :

- عن طريق object Explorer :

post-126189-082576700 1306249792_thumb.p

- عن طريق الكود :

post-126189-019285800 1306249752_thumb.p

- التعديل :

- عن طريق الكود :

post-126189-001418400 1306249754_thumb.p

- حذف وتعديل Database Scope Triggers :

-الحذف :

-عن طريق Object Explorer :

post-126189-019298000 1306249758_thumb.p

-عن طريق الكود :

post-126189-091162300 1306249759_thumb.p

-التعديل:

post-126189-031276400 1306249761_thumb.p

- إيقاف / تشغيل Server Scope Triggers:

-عن طريق object Explorer :

post-126189-038729800 1306249766_thumb.p

- الكود :

post-126189-057962200 1306249767_thumb.p

- إيقاف / تشغيل Database Scope Triggers:

-عن طريق object Explorer :

post-126189-094735800 1306249797_thumb.p

- الكود :

post-126189-031484400 1306249799_thumb.p

إستخدامEventData Function :

تستخدم هذه الدالة مع الــDDL Triggers لجلب بيانات عن الــحدث الذي تم تشغيله على صورة بيانات XML ومنها :

1- وقت إطلاق الحدث.

2- نوع الحدث الذي يتم إطلاقه.

3- كود الــSession اللي قامت بإطلاق الحدث ( SPID).

مثال على البيانات التي تعرض :

post-126189-011915200 1306249801_thumb.p

الناتج :

post-126189-069920300 1306249803_thumb.p

أخيرا اخواني ارجو أن قد أوضحت الــTriggers بشكل مفهوم لانه موضوع مهم جداَ ... :)

Triggers.pdf

المرفقات
1.PNG2.PNG3.PNG4.PNG5.PNG6.PNG7.PNG8.PNG9.PNG10.PNG11.PNG12.PNG13.PNG14.PNG15.PNG16.PNG17.PNG18.PNG19.PNG20.PNG21.PNG22.PNG23.PNG25.PNG26.PNG27.PNG28.PNG29.PNG30.PNG31.PNG24.PNG32.PNG33.PNG34.PNG35.PNGinsert.PNGDelete.PNGUpdate.PNGCapture.PNG

تم تعديل هذه المشاركة بواسطة medo_Programming في 24 مايو 2011 في 18:58

1

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#7

ولااروع من هذا الشرح بالتفصيل

شكرا

#8

جزاك الله خير شرح ولا اروع

كان عندي استفسار :

اريد استخدام هذه الاداة مع قاعدة بيانات تحتوي على 60 جدول بحجم ما يقارب 1.5 جيجا

مع كل الجدوال . لكي اقوم بعملية ربط بين اثنين من قواعد البيانات . اذا حدث تغير في احدها يتم التغير على الاخرى

السوال هل تتأثر كفائة الاداة مع استخدام موسع لها ؟؟

#9

اكيد طبعا حتتأثر ولكن على حسب مواصفات الserver و كمية التحديثات المراد تحديثها ......لو عايز تعرف الPerformance للسيرفر ممكن تستخدم SQL SERVER PROFILER

بس انا انصحك انك تستخدم الMirroring او الreplication لانهم تقنيات خاصة بData Availability

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

مواضيع مشابهة