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

ماالفرق بين الدوال والاجراءات المخزنة وtigger

مغلق
بدأه roza_03 في 11 أبريل 2005 · 8 رد · 7,161 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

صباح الخير للجميع

اتمني ان يتم الشرح لي عن الفرق بين الدوال والاجراءات المخزنة و tigger

فانا الان اعمل على برنامج لمكتبة مركزية وعندي مثلا جدول مسجل فية تاريخ الحرمان للطلبة اللذين تاخرو عن اعادة الكتاب وكذلك مسجل فية عدد ايام الحرمان واحتاج ان يتم حذف السجل اوتوماتيك اذا اصبح مجموع تاريخ بداية الحرمان مع عدد الايام يساوي تاريخ اليوم الحالي فما هو الافضل استخدام اي طريقة وهل اعمل اجراء مخزن ام tigger وكيف اعمل لها كول في الكود مع العلم اني اعمل على vb.net & SQL server2000

وهل يمكن اذا عملت دالة اعمل لها كول في كود vb

اشكر مقدما كل من يحاول مساعدتي

#2
اقتباس
الفرق بين الدوال والاجراءات المخزنة و tigger

احتاج شرح وافى لكل من trigger و stored procedure

Triggers And Functions

اما بخصوص كود المكتبة فارسل الكود اليوم لانى الان لا املك ال MS SQL Server للتجربه

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

كتبت Tigger لحذف كل سجل في جدول الحرمان اذا كان تاريخ الحرمان اقل من او يساوي تاريخ النظام (اتوقع ان الكود يكون فية مفاهيم متداخلة لان مالي الا اسبوع ونص بادية اتعلم SQL server )

CREATE TRIGGER [deleteFromTable] ON dbo.deprived 
FOR INSERT, UPDATE, DELETE 
AS
declare @date datetime

while (@@fetch_status=0)
begin 
select @date=(select DeprivedEnd from  [dbo].[deprived])
if  @date<=GETUTCDATE()
delete from deprived where DeprivedEnd=@date 

end

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

CREATE FUNCTION [OWNER].[returnBorrowingDay] 
()
RETURNS tinyint 
BEGIN 

declare @nodate tinyint

 set @nodate=(select borrowerClassification.duration from borrowerClassification,bookLoan,borrower 
 where  borrower.borrowerSetNO=borrowerClassification.setNO and bookLoan.membershipNO=borrower.membershipNO)

return @nodate

END

اتمنى اعطائي راي حضرتك هل اختياري لمهمة الtigger صحيحة بحيث انة يقوم بهذا العمل وكذلك الدالة لان اللبس واقع عندي متى استخدم tigger ومتى استخدم دالة ومتى اعمل اجراء مخزن

وهل صحيح اللي انا فهمتة وهو ان الدالة والاجراء المخزن ممكن اناديهم من الVB اما الtigger اضعة فقط على الجدول

وهل يمكن عمل tigger يقارن بيانات من جدول اخر

وجزاك الله خير عن كل ما تقدمة

تم تعديل هذه المشاركة بواسطة roza_03 في 12 أبريل 2005 في 02:12

#4

يااخوان ممكن احد يرد على استفساري

#5

تحياتي لكل الاعضاء في المنتدى

رح نركز على فكرة trigger وتاريخ الحرمان.

بالبداية trigger على الجدول لا يعمل تلقائيا بدون اي حركة على الجدول والمقصود بحركة على الجدول اي عملية اضافة او حذف او تحديث

لذلك ان trigger لا ينفع في عملية الكشف عن انتهاء تاريخ الحرمان لأنه يجب ان يعمل النظام تلقائيا بدون اي عملية على الجدول وذلك على فرض ان المكتبة مرت بفترة عطلة ولم يعمل احد على النظام في هذه الفترة .

اذا الحل هنا هو عمل اجراء مخزن stored procedure ووضعه في job ونجعل job يعمل كل يوم او ساعات او في ايام او اسبوع

وسأسهب في كيفية عمل job بالصور لأنني رأيت اكثر من مرة سؤال عنها.

بالبداية سنكتب الاجراء المخزن

CREATE PROCEDURE MyProc
AS delete   from deprived where DeprivedEnd = GETUTCDATE()

GO

وسنتابع بكيفية عمل job

تم تعديل هذه المشاركة بواسطة walcom في 21 أبريل 2005 في 08:57

#6

كيفية عمل job ووضع الاجراء الذي كتبناه سابقا MyProc ووضعه في job ليعمل كل يوم تلقائيا في الساعة 1 ليلا

الصور واضحة وهي التي تتكلم

وفي حال اي استفسار ارجو الكتابة

20_02_06_03_09_47_1140433787sql_jobs1.jpg

20_02_06_03_10_09_1140433809sql_jobs_.jpg

20_02_06_03_10_28_1140433828sql_jobs3.jpg

20_02_06_03_11_16_1140433876sql_jobs4.jpg

post-43707-1114008786_thumb.jpg

post-43707-1114008856_thumb.jpg

post-43707-1114009003_thumb.jpg

post-43707-1114009039_thumb.jpg

تم تعديل هذه المشاركة بواسطة walcom في 20 فبراير 2006 في 14:01

#7

وهنا انتهى job وبأمكاننا رؤية خصائصه او نشغله او نرى تاريخ عمله

20_02_06_03_12_31_1140433951sql_jobs5.jpg

post-43707-1114009202_thumb.jpg

تم تعديل هذه المشاركة بواسطة walcom في 20 فبراير 2006 في 14:02

#8

شكر جزيل للأخ mark222 على الشرح :)

فكر بطريقة أخرى

#9

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

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

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