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

trigger

مغلق
بدأه محمد الاحمري في 31 أكتوبر 2004 · 2 رد · 930 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الرجاء التكرم بمساعدتي بانشاء trigger يقوم بعمل LOG بحيث يقوم في حالة ال delet او الupdate باضافة القيمة القديمه والقيمه الجديده الى جدول اخر

#2

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

لو تقصد بان السجل أثناء الحذف أو التعديل سينتقل لجدول أخر لة نفس الشكل

فحلها بسيط بعون الله

طبعا هذا مثال لجدولين (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

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

#3

شكرا شكرا شكرا

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

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

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

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