الرجاء التكرم بمساعدتي بانشاء trigger يقوم بعمل LOG بحيث يقوم في حالة ال delet او الupdate باضافة القيمة القديمه والقيمه الجديده الى جدول اخر
trigger
أخي محمد الاحمري
لو تقصد بان السجل أثناء الحذف أو التعديل سينتقل لجدول أخر لة نفس الشكل
فحلها بسيط بعون الله
طبعا هذا مثال لجدولين (Table1,Table2)
كل جدول من الجدولين يحتوي على حقلين بنفس المسميات وهما (Field1, Field2)
الحدث التالي يخص الجدول Table1
و يعمل عند التحديث
CREATE TRIGGER trigUpdate ON table1 FOR UPDATE AS -- يتم تعريف متغيرين DECLARE @a char(10), @b char(10) -- @a للحقل Field1 , و @b للحقل Field2 DECLARE c1 CURSOR FOR SELECT field1,field2 FROM inserted OPEN c1 --بأستخدام المؤشر FETCH NEXT FROM c1 INTO @a, @b insert into Table2 (field1,field2) values ( @a , @b ) CLOSE c1 DEALLOCATE c1 GO
لاحظ السطر رقم 8
FROM inserted
تتوفر عند عملية الادخال للسجلات الجديدة و التحديث على سجل مسبق فقط
حل أخر
CREATE TRIGGER trigUpdate ON [dbo].[Table1] FOR UPDATE AS insert into table2(field1,field2) select field1,field2 from inserted
الحلين السابقين بالنسبة لعملية التحديث لهم نفس النتيجة
بالنسبة للحذف
CREATE TRIGGER trigUpdate ON table1 FOR DELETE AS -- يتم تعريف متغيرين DECLARE @a char(10), @b char(10) -- @a للحقل Field1 , و @b للحقل Field2 DECLARE c1 CURSOR FOR SELECT field1,field2 FROM Deleted OPEN c1 --بأستخدام المؤشر FETCH NEXT FROM c1 INTO @a, @b insert into Table2 (field1,field2) values (@a,@b) CLOSE c1 DEALLOCATE c1 GO
أيضا لاحظ السطر رقم 8
FROM Deleted
و الحل الأخر
CREATE TRIGGER trigUpdate ON [dbo].[Table1] FOR DELETE AS insert into table2(field1,field2) select field1,field2 from inserted
طبعا الكائنين Inserted و Deleted يمثلان Record يعني سطر من الجدول الذي ينتمي له الحدث و يحملان بيانات السطر الذي تجرى علية العملية
في الحذف Deleted
و في الأضافة و التحديث Inserted
هذا على حسب فهمي للمشكلة
و لو لم يكن هذا طلبك الرجاء المزيد من التوضيح
تم تعديل هذه المشاركة بواسطة server_programmer في 14 نوفمبر 2004 في 09:45
شكرا شكرا شكرا
شكرا و لكن حذاري من أن يكون هناك تيرجر في نفس الجدول به تحديث لعملية اخرى و تقوم بإنشاء تيرجر جديد لهذا الامر مما سيؤدي إلى نسخ كافة بيانات الجدول
لذا أرفق التيرجر الخاص بالتحديث في نفس التيرجر الذي قمت بإنشائه سابقا ابتداء من كلمة Insert into و إلى اخر التيرجر
هذا الموضوع مغلق.