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

كود insert بشرط

مغلق
بدأه nour_mohamed في 21 يوليو 2007 · 7 رد · 1,275 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اعزائي احتاج كود insert بشرط . اي اني اريد ادخال قيم معينه بشرط محدد .

ان هذا الكود غير صحيح ولكنه للتوضيح

insert into res_hotel (hotel_id, res_hotel_id,res_id,res_hotel_rt,res_hotel_date)values(@hot_id,@res_hotel_id,@res_id,@res_hotel_rt,@res_hotel_date) where @hot_id=hotel_id

#2

شكرا لك اخي وان ما قصدته هو ان هل يوجد كود يقوم بعملية ادخال البيانات الىDATABASE وذلك بشرط اي انني مثلا اريد ادخال اسماء الموظفين الذين تم تعيينهم من تاريخ 1/1/2003 الى تاريخ 1/1/2006 ولا يدخل قبل هذا التاريخ ولا بعده

ارجو ان اكون وضحت ما قصدت

#3

أخى العزيز

أن الشرط يكون فى جملة Update أو Delete ولكن لا يمكن أن يكون الشرط بجملة insert وإذا أردت ان تضع شرط فضعة قبل جملة ال

insert

					  if ..........
then 
insert ........
else
messagebox.show".............."

وهكذا

#4

شاكره اخي KAHLEDANWAR28 على التوضيح

وشكرا

#5
اقتباس
أخى العزيز

أن الشرط يكون فى جملة Update أو Delete ولكن لا يمكن أن يكون الشرط بجملة insert وإذا أردت ان تضع شرط فضعة قبل جملة ال

insert

اخي الكريم هذا الكلام خاطيء تماما و يمكنك ان تقوم بعمل شرط بل شروط في جمل insert و ذلك عن طريق ما يسمي ب insert with subquery

و عموما الموضوع له الف حل و لكن ابسطها هو ال Insert with subquery

و كمثال علي ما قالته الاخت

INSERT INTO employees (name)
SELECT emp_name 
FROM emp_names 
WHERE hire_date between '01-jan-2003' and '01-jan-2006';

لاحظوا هنا لم نستخدم ال VALUES keyword لانه لا مكان لها هنا و هذا هو التركيب الصحيح للجملة فكيف ستضع VALUES و الجملة اساسا تقوم بعمل insert عن طريق SELECT STATEMENT!!!

و يمكن هنا ايضا استخدام دالة مثل case او decode لو تستخدمين اوراكل

ايضا يمكنها عمل check constraint اثناء عمل الجدول نفسه لا يسمح بادخال قيم خارج هذين القيمتين

CREATE TABLE TABLE_NAME ................
hire_date DATE CONSTRAINT constraint_name CHECK(hire_date between '01-jan-2003' and '01-jan-2006');

كما يمكنها عمل view يقوم بمقام layer تعمل ال insert في الجدول و بشروطها

كما يمكنها عمل DML TRIGGER لو انها مبرمجة متمرسة و يقوم بفحص القيم on row level و ليس on statement level و يقوم بعمل check علي كل قيمة مدخلة

هذه بعض الحلول من حلول كثيرة لعمل insert بشروط و ايضا التاكد من ان هذه الشروط تم تنفيذها

رجائا التاكد من المعلومة قبل نشرها حتي لا نضر الاخرين و جزاكم الله كل خير

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#6

شكرا اخي ROMANTEC_BOY على المعلومه وانا قمت بتجربت الكود وكان صحيح ولكن للاسف لم اصل الى مرحلة الاحتراف ولا ادري كيف ON ROW LIVEL او on statement level

انا استخدم VB.NET2003 و SQL2000وليس الاوركل

واشكرك جدا على الافاده

تم تعديل هذه المشاركة بواسطة nour_mohamed في 22 يوليو 2007 في 13:58

#7

الاخ الكريم نور

انا ايضا مبرمج .net متمرس عملت باصدارات 2002 و 2003 و 2005 في ال visual studio.net و عملت باصدارات 2000 و 2005 في ال sql server و لكن موضوع ال triggers لا علاقة له بال RDBMS الذي تستخدمه فهو موجود في معظم ال Robust RDBMS

ال trigger هو عبارة عن اجراء يتم تنفيذه عند حدوث شيء ما في قاعدة البيانات كالدخول الي قاعدة البيانات او اضافة سجل او حذف سجل او انشاء كائن من كائنات قاعدة البيانات ....... الخ

الفكرة انه يمكن من ضمن الحلول التي ذكرتها عمل trigger يقو بالتحقق من جملة ال insert في كل مرة يضيف قيمه فاذا كانت القيمة تقع في نطاق الشرط يقوم بادخالها و الا لا يقوم بادخالها و يستبدلها ب Null و هذه الجملة لا يتم تنفيذها الا علي ال row level , معني هذا ان ال trigger يتم تشغيله في كل مرة يتم اضافة سجل جديد اما معني statement level ان ال trigger يعمل مرة واحدة فقط لجملة ال Isert هذا باختصار لان ال trigger موضوع يطول شرحه و به الكثير من التفاصيل

في حالتنا هذه استخدام ال :old و ال :new بالنسبة لجمل ال dml هو الحل في حالة اردنا ان يتم عمل ال Insert في نطاق معين بدون تدخل من ال user و لكن ال database تجبره علي ذلك

اسف علي الاختصار لضيق الوقت

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#8

شاكره لك اخي romantec_boy على المعلومات القيمه هذه فانا فهمت الفكره من استخدام trigger واكيد ان شاء الله سابحث عنها واحاول تعلمها لانها من الواضح انها هامه ومفيده جدا وتساعد على تخفيف الاخطاء في عمليات dml .

,واكرر شكري لك وجعله الله في ميزان حسناتك باذن الله -waf

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

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