السلام عليكم ،،،
لدي ترايجر يستخدم لتحديث بيانات جدول عند اضافة او حذف سجلات من جدول آخر
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 أو بتنفيذ الاستعلام من برنامج خارجي فان القادح لا يعمل
ارجو ان اجد له حلا
ولكم خالص الشكر والتقدير