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

لا يعمل ال trigger for delete عند حدوث حذف سجلات

بدأه أبو محمـد في 13 فبراير 2010 · 3 رد · 817 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ،،،

لدي ترايجر يستخدم لتحديث بيانات جدول عند اضافة او حذف سجلات من جدول آخر

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[ins_acc]
   ON  [dbo].[trans_d]
   FOR insert
AS 
BEGIN
DECLARE @old_id float;
DECLARE @madeen1 float;
DECLARE @daen1 float ;
select  @old_id = acc_id ,@madeen1 = madeen, @daen1 = daen from inserted ; 
----------
update ACCOUNTS
    set ACCOUNTS.madeen =  ACCOUNTS.madeen + @madeen1 ,ACCOUNTS.daen =  ACCOUNTS.daen + @daen1 
	where ACCOUNTS.acc_id = @old_id ;
END

هذا القادح يعمل بدون مشاكل.

الآخر

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[del_acc]
   ON  [dbo].[trans_d]
   FOR delete
AS 
BEGIN
DECLARE @old_id float 
DECLARE @madeen1 float 
DECLARE @daen1 float 
----------
SET NOCOUNT ON;
SELECT  @old_id = d.acc_id ,@madeen1 = d.madeen, @daen1 = d.daen from Deleted d; 
update ACCOUNTS
   set ACCOUNTS.madeen = ACCOUNTS.madeen - @madeen1  ,ACCOUNTS.daen =  ACCOUNTS.daen -  @daen1 
	where ACCOUNTS.acc_id = @old_id 
END

الثاني يعمل إذا قمت بحذف البيانات مباشرة من الجدول باستخدام برنامج SQL SERVER MANAGEMENT ام اذا استخدمت Query أو بتنفيذ الاستعلام من برنامج خارجي فان القادح لا يعمل

ارجو ان اجد له حلا

ولكم خالص الشكر والتقدير

#2

السلام عليكم

المشكلة طلعت بسبب حذف أكثر من سطر في نفس الوقت ، حيث الترايجر لا يفذ الا على الاول والباقي لا .

كيف يتم تنفيذ الترايجر في هذه الحالة ولكم خلص الشكر والتقدير

#3

تم حل المشكلة باستخدام الكيرسور ، لا اعلم ان كان هناك طريقة افضل ام لا

DECLARE cur CURSOR FOR SELECT acc_id,madeen,daen FROM Deleted;
#4

طالما تود العمل على Result Set من داخل ال MS SQL Server فحل ال Cursor سيعمل معك و لكن خذ فى اعتبارك انه حل مكلف من ناحية الاداء

Technical Lead Developer

My LinkedIn Profile

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

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

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