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

Trigger and functions

مغلق
بدأه Ahmed H. Alawady في 8 أبريل 2005 · 9 رد · 9,929 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام على من اتبع الهدى

أخواني الأعزاء طبتم وطاب ممشاكم وتبوئتم من الجنة منزلا

أرجوا منكم جميعا لمن عنده علم ب Trigger وأيضا ب Function

لما وجدت له من أهمية عظيمة بعد قراءة الموضوع هذا

/index.ph...opic=60789&st=0

فأرجوا شرح تفصيلي لهما وجزاكم الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#2

السلام على من أتيع الهدى

أنا أقصد شرح كيفية إستخدام الأوامر فيهما وكيفة كتابة البرمجة ولم أقصد ما فائدتهما

فأنا أعرف فائدتهما ولكن أريد أن أستخدمهما وأتعلم كيفية الكتابة بهما وأن أستطيع فهم أي كود مكتوب بهما

وجزاكم الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#3

السلام عليكم و رحمة الله و بركاته

أخي الكريم أحمد

و الله أنا لا أعرف بالضبط ماذا أقول عن سؤالك هذا و لكني تعمدت أن أقنع نفسي بأني لا أعرف أي شئ عن القوادح التي تطلب شرحها و أخذت أبحث عن مصادر هنا في المنتدى و لكنني فوجئت مفاجأة كبيرة عندما وجدت فتات موجودة عن القوادح ، و عندها قلت أنك معذور في سؤالك هذا ، فأنت بالتأكيد لم تملك كتاب تتعلم منه أساسيات اللغة و أيضاً من الجائز أنه ليس لديك القدرة على التعامل مع الكتب الأجنبية حيث ان الأخوة طارق و وليد جزاهم الله خيراً عنا و عن جميع المسلمين أرفقوا لنا كتب أنجليزية أعتبرها ثروة فعلاً و لكن !!!!!

وعدني أخي طارق بأنه سوف يكون قسم لشرح أس كيو إل سيرفر بالتفصيل و أنا و أنت في أنتظار هذا القسم بشغف و شوق ولي أقتراح صغير لو شئتم أخذتم به و لو شئتم أيضاً تجاهلتموه

الأقتراح هو منتدى فرعي يسمى منتدى تراجم أس كيو إل سيرفر و هذا المنتدى الفرعي فقط تقدم فيه التراجم الخاصة بالمقالات الأجنبية و الكتب الأجنبية المتاحة من خلال النت و يتم تحويلها إلى صيغة pdf على أن تكون هذه التراجم متاحة للجميع في أي وقت

لا حركة نهضة بدون حركة تراجم ،، لابد لنا من مصادر مترجمة للعربية

أنا أسف أخي محمد لأن ردي على سؤالك الأن عن نوعيات القوادح لن يحل المشكلة من أساسها فالمشكلة الأساسية نحن في حاجة إلى حركة ترجمة تكون ثابتة في منتدى فرعي يقوم عليها شباب لهم عزيمة مثل الأخوة طارق و وليد و تتم الترجمة بواسطة كل من له خبرة في الترجمة و قراءة المقالات الأجنبية ثم يتم تنقيحها و عرضها للجميع

و أخيراً أنا سوف انتظر طبعاً الرد على سؤالك و على أقتراحي من الأخوة مشرفي المنتدى و أنا كلي ثقة فيهم و في قدراتهم على فعل كل ماهو مفيد لنا جميعاً

و السلام عليكم و رحمة الله و بركاته

itasmallbanner.png
#4
اقتباس
أيضاً من الجائز أنه ليس لديك القدرة على التعامل مع الكتب الأجنبية حيث ان الأخوة طارق و وليد جزاهم الله خيراً عنا و عن جميع المسلمين أرفقوا لنا كتب أنجليزية أعتبرها ثروة فعلاً و لكن !!!!!

السلام عليكم ورحمة الله وبركاته

أخي العزيز لست لهذه الدرجة :D فإنني والحمد لله أستطيع قراءة وفهم الكتب الأجنبية بدرجة جيد جدا والحمد لله

ولكني من السرعة لم يمر أمامي هذه الكتب التي أشرت إليها

فجزاك الله خيرا إذا وضعتها في هذا الموضوع أو أشرت إلى موضعها في موضوع آخر

وبارك الله فيك وزادك علما "ونحن ننتظر منك المزيد بإذن الله"

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#5

السلام عليكم و رحمة الله و بركاته

أخي الكريم أحمد

أنا لست أعنيك فأنا لا أعرف ما هي قدراتك و لكني لماذا تخيلت أنه في موضعك شخص أخر أو( حتى أنت )لا يعرف أن يقرأ غير العربية و يريد أن يعرف ما هذا الذي نتحدث عنه أو ماهو أس كيو إل سيرفر لذلك إشرت إلى الأخوة المشرفين بتبني فكرة أن ينشأوا منتدى فرعي للتراجم

فأرجوا أن لا تنزعج مني فأنا أيضاً لا أستطيع أن أقرأ كتاب باللغة الأنجليزية بدون قاموس و ذلك يعني أن كثيراً من المصطلحات الأنجليزية أبحث عنها و أنا صراحة أفتخر بأني أحاول

و أخي الكريم أقولها لك صراحة و هذه من خبرتي في البحث في الأنترنت عن مصادر أس كيو إل سيرفر - صدقني المستوى العام بالنسبة للأجانب لا شئ فعلاً - و هذه حقيقة يجب أن نأخذها مأخذ الجد و أن لا نستهين بقدراتهم ،أنظر إلى مثلاً منتدى SQL CENTERAL فعلاً قوة في طرح الموضوعات العلمية الشديدة التي تحتاج إلى متخصصين فعلاً حتى مثلا عندما يطرح موضوع مثل تريجر أو القادح سوف تجد متخصصين يشرحون لك بالتفصيل ماهو القادح من جميع جوانبه و أيضاً النواحي الفنية التي تخفى على العامة و أنا أسف فعلا عندما أردت أن أجد مادة علمية باللغة العربية كاملة عن القوادح بعد مطالعتي سؤالك لم أجد ما يكفي لسد رمقي بخصوص هذا الموضوع و قس على ذلك ،،،

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

و اشكرك كثيراً و ارجوا أن لا تنزعج مني

أخوك

ملحوظة إن إردت إي شئ عن القوادح أو خلافه فأنا تحت أمرك و الأمر لله وحده

itasmallbanner.png
#6

السلام عليكم ورحمة الله وبركاته

أخي الكريم جزاك الله خيرا ، فنحن أخوة في الله ولكنك أنت أفضل مني بكثير في العلم وفي عملك الخير وعند الله إن شاء الله

فأنا لم ولن أغضب أو أأخذ شئ في نفسي

وجزاك الله خيرا إذا كتبت كل فترة في هذا الموضوع شرح كلمة أو كلمتين في القوادح فجزاك الله خيرا

وفي كل حال جزاك الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#7

السلام عليكم و رحمة الله و بركاته

أخي الكريم أحمد

اليوم بإذن الله أو غداً إن شاء المولى عز و جل سوف تجد شرحاً للقوادح إن شاء الله في هذا الموضوع إن لم يسبقني إلى ذلك أحد الشباب الذين يتسابقون إلى الخيرات في هذا المنتدى .

و اشكرك

و السلام عليكم و رحمة الله و بركاته

itasmallbanner.png
#8

بسم الله الرحمن الرحيم و الصلاة و السلام على النبي الهادي الأمين

أخواني الكرام

القوادح TRIGGERS

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

ما هي أنواع القوادح ؟

يوجد نوعين من القوادح

النوع الأول : القوادح AFTER

و ينقسم النوع الأول إلى ثلاثة أنواع فرعية تتفرع منه

1- UPDATE

2- DELETE

3- INSERT

و تكون باللغة العربية أنواع القوادح هي

1- بعد التحديث

2- بعد الحذف

3- بعد الإدخال

أي أن الإجراء القادح AFTER UPDATE هو إجراء قادح يتم تشغيله و قدحه كلما حصل حدث و هو التحديث

و الأجراء القادح AFTER DELETE هو إجراء قادح يتم تشغيله و قدحه كلما حصل حدث و هو الحذف

و الأجراء القادح AFTER INSERT هو إجراء قادح يتم تشغيله و قدحه كلما حصل حدث و هو إدخال صف جديد

النوع الثاني : القوادح INSTEAD OF

و كلمة INSTEAD OF اي بدلاً من و لهذا النوع من القوادح أيضاً ثلاثة أنواع

و ينقسم النوع الأول إلى ثلاثة أنواع فرعية تتفرع منه

1- UPDATE

2- DELETE

3- INSERT

فنجد أن الإجراء القادح INSTEAD OF UPDATE هو إجراء قادح يتم تشغيله و قدحه كلما أنطبق شرط تشغيله بحيث أن يستبدل الحدث UPDATE بغيره من الجمل البرمجية الموصفة في الإجراء

و الأجراء القادح INSTEAD OF DELETE هو إجراء قادح يتم تشغيله و قدحه كلما أنطبق شرط تشغيله بحيث أن يستبدل الحدث DELETE بغيره من الجمل البرمجية الموصفة في الإجراء

و الأجراء القادح INSTEAD OF INSERT هو إجراء قادح يتم تشغيله و قدحه كلما أنطبق شرط تشغيله بحيث أن يستبدل الحدث INSERT بغيره من الجمل البرمجية الموصفة في الإجراء

*** يجب ملاحظة أن القوادح من النوع AFTER تطبق فقط على الجداول أما القوادح من النوع INSTEAD OF فمن الممكن أن تطبق على الجداول و المناظير (VIEW )

*** و أيضاً القوادح من النوع INSTEAD OF غير متوافقة إلى حد كبير مع التكامل المرجعي المتتالي

*** لا يمكن إنشاء CREAT أو ALTER أو DROP قاعدة بيانات بأستعمال قادح

و الصيغة البرمجية لإنشاء قادح هي

CREATE TRIGGER trigger_name ON table_or_view
trigger_type command_list
AS SQL_statement

و الأن الأمثلة

USE Aromatherapy
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'afterUpdate' AND type = 'TR')
   DROP TRIGGER afterUpdate
GO


CREATE TRIGGER afterUpdate ON Oils
AFTER UPDATE
AS INSERT INTO TriggerMessages (TriggerName, MessageText)
VALUES ('afterUpdate', 'Posted from the afterUpdate trigger')

و مثال إخر عن INSTEAD OF

USE Aromatherapy
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'InsteadOf' AND type = 'TR')
   DROP TRIGGER afterUpdate
GO


CREATE TRIGGER insteadOf ON Oils
INSTEAD OF UPDATE
AS INSERT INTO TriggerMessages (TriggerName, MessageText)
VALUES ('insteadOf', 'Posted from the insteadOf trigger')

و أنا أسف لعدم الأكمال فإن هذا الموضوع كبير جداً و لكن الوقت مضغوط لدي و لكن سوف نكون سوياً إن شاء الله على أتصال

هذا التلخيص هو من كتاب أستخدام MICROSOFT SQL SERVER 2000 من تأليف ريبيكا م.رايوردون و الأمثلة أيضاً من الكتاب فأرجو أن تستفيد

و السلام عليكم

1
itasmallbanner.png
#9

السلام عليكم و رحمة الله و بركاته

أخي الكريم

أرجع مرة أخرى لك في نقطة مهمة و ركيزة مهمة في التلاعب بالصفوف في إجراءات أس كيو إل سيرفر و خصوصاً الأجراءات القادحة

لو تلاحظ في الكود الذي وضعته في موضوع برامج و حلول محاسبية بـ SQL SERVER

فسوف تجد الكود التالي

select @parentacc = parentaccount_node from inserted where accountid=@account
select @leftextent = leftextent from inserted where accountid=@account

ماذا تلاحظ فيه سوف تلاحظ FROM INSERTED

ماذا يعني هذا ؟ فنحن دائما نعرف أنه بعد الكلمة FROM يأتي أسم الجدول إذن هل هناك جدول أسمه INSERTED ؟

أخي الكريم

هناك أمكانية غير عادية في الأجراءات المخزنة و خصوصاً الأجراءات القادحة و ذلك بأنه يتم ترجمة العمليات الثلاثة المثيرة و المحثة للقادح و هي العملية DELETE و العملية UPDATE و العملية INSERT كما سيلى ذكره

أولاً العملية INSERT : هي عملية ينتج عنها أضافة صف جديد

ثانياً العملية DELETE : هي عملية ينتج عنها حذف للصف الموجود

ثالثاً العملية UPDATE : هي عملية تحديث ينتج عنها حذف للصف القديم و إدخال التعديلات في صورة صف جديد

و في أس كيو إل سيرفر إي عملية من العمليات الثلاث السابقة ينتج عنها حركة خفية في جداول نظامية و هما جدولين أساسين

الجدول الأول INSERTED

الجدول الثاني DELETED

أولا الجدول INSERTED : هو جدول مختص في تخزين الصف المدخل حديثاً

ثانياً الجدول DELETED : هو جدول مختص في تخزين الصفوف المحذوفة

ولكن السؤال هنا ألا يوجد جدول للعملية UPDATE ؟

لا لا يوجد و لكن تترجم العملية UPDATE إلى صف محذوف و صف مدخل حديثاً ، فالصف المعدل فيه بوضعه القديم و بنفس القيم القديمة يدخل في الجدول DELETED و الصف المعدل فيه بوضعه الجديد بعد التعديل كأنه صف جديد يدخل في الجدول INSERTED

إذن عند أدخال صف جديد نفس الصف تجده بنفس قيمه في الجدول INSERTED

و عند حذف صف فأن الصف المحذوف من الجدول تجده بنفس قيمه في الجدول DELETED

و عند تعديل صف يتم تقسم هذا الحدث إلى قسمين القسم الأول قبل التعديل و القسم الثاني بعد التعديل فالقيم القديمة قبل التعديل يتم حذفها و تجد قيمها في الجدول DELETED و القيم الجديدة بعد التعديل يتم أضافتها و تجد قيمتها في الجدول INSERTED و كأنها صف جديد تماماً

و هنا يأتي دورنا نحن في التلاعب بالبيانات و بهذه الخواص في هاتين الجدولين لأستغلال القيم القديمة و الجديدة ، و هنا تكمن قوة القوادح و الأجراءات عموماً كيف نلعب بالصفوف و نتلاعب بها و لكن نصل إلى ذلك يجب علينا أن نفهم جيداً ما هي أستراتيجية التعامل مع الصفوف من قبل أس كيو إل سيرفر

أتمنى أن تكون هذه الأمور واضحة لك

و أرجو أن تراجع الأداة BOOK ONLINE المدرجة بأس كيو إل سيرفر فسوف تساعدك كثيراً

و أشكرك مرة أخرى

و السلام عليكم و رحمة الله و بركاته

1
itasmallbanner.png
#10

السلام عليكم ورحمة الله وبركاته

أخي الكريم بارك الله فيك فقد أحسنت والله الشرح

فنحن ننتظر المزيد

وجزاك الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

هذا الموضوع مغلق.

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