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

سؤال بخصوص تحديث جدول بناء علي جدول آخر

بدأه dabas في 23 ديسمبر 2014 · 3 رد · 2,236 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي جدول رئيسي (NotPayed) و فيه يتم تسجيل مطالبات مالية علي الحساب (ديون) 

 

8244128956449c4.jpg

 

 

و مرتبط به جدول آخر الدفعات (Payments) من خلال المفتاح الاساسي (MediaID) و المفتاح الأجنبي (Motalabah)

 

940eb500b6c7388.jpg

 

فمثلا اذا قمت بتعديل العملة المطالبة رقم 20 للمؤسسة رقم 1 في الجدول الأساسي (NotPayed) يتم تعديل العملة لجميل الدفعات الخاصة بهذة المطالبة في جدول الدفعات (Payments ) مع العلم انه عند عمل علاقة بين الجدولين قمت بعمل  Updata/Delete Cascade

#2

اولا لاياثرUpdata/Delete Cascade بل فقط علي مفتاح الربط

ثانيا ما هو الكود المستخدم للتحديث عنك اذا كنت تسخدم اجراء مخزن يسهل الامر؟؟؟؟؟؟؟؟؟؟؟؟؟

#3
KARIMSOFT كتب:

اولا لاياثرUpdata/Delete Cascade بل فقط علي مفتاح الربط

ثانيا ما هو الكود المستخدم للتحديث عنك اذا كنت تسخدم اجراء مخزن يسهل الامر؟؟؟؟؟؟؟؟؟؟؟؟؟

الكود عبارة عن اجراء مخزن

ALTER proc [dbo].[Update_NotPayed]
            @MediaID  varchar(50)
           ,@Motalabah varchar(25)
           ,@MotalabahDate date
           ,@CustomersID int
           ,@CurrencyID varchar(5)
           ,@Amount float
           ,@DateOfPayed date
as

UPDATE [dbo].[NotPayed]
   
   SET
       [MotalabahDate] = @MotalabahDate
      ,[CustomersID] = @CustomersID
      ,[CurrencyID] = @CurrencyID
      ,[Amount] = @Amount
      ,[DateOfPayed] = @DateOfPayed
 
 WHERE @MediaID = MediaID and @Motalabah = Motalabah
#4

try the code

ALTER proc [dbo].[Update_NotPayed]
            @MediaID  varchar(50)
           ,@Motalabah varchar(25)
           ,@MotalabahDate date
           ,@CustomersID int
           ,@CurrencyID varchar(5)
           ,@Amount float
           ,@DateOfPayed date
as
BEGIN 
BEGIN TRANSACTION

UPDATE [dbo].[NotPayed]
   SET
       [MotalabahDate] = @MotalabahDate
      ,[CustomersID] = @CustomersID
      ,[CurrencyID] = @CurrencyID
      ,[Amount] = @Amount
      ,[DateOfPayed] = @DateOfPayed
WHERE MediaID = @MediaID and Motalabah = @Motalabah

UPDATE Payments
SET Payment=Payment+@Amount
WHERE MediaID=@MediaID

IF @@ERROR =0
  COMMIT 
ELSE
begin
  ROLLBACK 
  raiserror ('ءءءء', 16, 1, 'خطء', 'حدث خطء') ;      
end
end

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