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

TRIGGER مشكلة

بدأه salr في 8 يناير 2015 · 3 رد · 862 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
CREATE TRIGGER Update_rw1
ON [dbo].[main_tb]
DECLARE @Valu1 decimal(10,2)
AFTER UPDATE
ASBEGIN
SET @Valu1= (Select [التكاليف]+[المنقول اليه]-[المنقول منه] FROM [dbo].[main_tb])
UPDATE  [dbo].[main_tb] SET [اجمالي التكاليف]=@Valu1
END

يعيد هذا الخطا 

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

 

المفترض يحدث حقل (اجمالي التكاليف)  عند اي تحديث للجدول

 

كيف يمكن التغلب على هذه المشكلة؟

تم تعديل هذه المشاركة بواسطة salr في 8 يناير 2015 في 01:32

#2

يقضل استخدام الاجراء المخزن وعمل هذا التعديل به

#3

السلام عليكم ورحمة الله وبركاته

سأشرح لك بإذن الله معنى الخطأ ولكن بعد الشرح ساوضح لك إن شاء الله أنك لا تحتاج لهذا الكود

معنى الخطأ هو أنك تحاول وضع قيمة فى متغير (قمت بتعريفه)

ولكن الاستعلام المكتوب يعود بأكثر من قيمة لذلك لا يستطيع تنفيذ طلبك،

بناء عليه: عندما تريد وضع قيمة فى متغير --> يجب التأكد أن الاستعلام لايعود إلا بسجل واحد فقط وخانة واحدة

 

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

لفعل ذلك ما عليك إلا كتابة أمر التعديل بالمعادلة المطلوبة

update main_tb set [إجمالى التكاليف] = [التكاليف] + [المنقول إليه] - [المنقول منه]

ورغم كل هذا إليك النصيحة البرمجية التى دائماً نحرص عليها

لا تنشئ عموداً يمكن حسابه

لأن هذا العمود المسمى بإجمالى التكاليف يمكنك إنشاؤه فى الاستعلام

 

لمزيد من التفاصيل يمكنك مراجعة حلقات الفيديو الخاصة بقواعد البيانات والاستعلام من الموضوع كورس سى شارب متكامل - فيديو فى هذا المنتدى

/index.php/topic/290627-%D9%83%D9%88%D8%B1%D8%B3-%D8%B3%D9%89-%D8%B4%D8%A7%D8%B1%D8%A8-%D9%85%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D9%81%D9%8A%D8%AF%D9%8A%D9%88/

تم تعديل هذه المشاركة بواسطة ema2000_t في 10 يناير 2015 في 20:59

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

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

EmaSoft2000

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

#4

السلام عليكم ورحمة الله وبركاته

اعتقد ان الخطا يمكن حلة من خلال تحديد الصف (row) الذى حدثت علية عملية التحديث من خلال المفتاح الاساسى المميز له 

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