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

ممكن المساعده في حل هذه المشكله

مغلق
بدأه عبدالوهاب ابوحجله في 8 مايو 2004 · 4 رد · 2,156 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لو سحمت قد واجهتني مشكله عند إستعمال ال database مع ال c# الا وهيه

عندما يكون عندي على سبيل المثال 10 صفوف مرتبه تصاعديا ومثبته على ال database SQLservar وبعدها قمت بحذف صف من ال الجدول , في هذه الحاله يصبح عدد الركورد = 9 ولكن الارقم تبقا مرتبه من 1 حتى 10 بستثناء رقم الصف الذي قمت بحذفه

اود تزويدي بطريقه ما لاعادت ترتيب هذا الجدول مع الاعلم انا هذه الارقم هي عباره عن برايمري كي ولك الغرض منها هوه فقت الترتيب وعدم التكرار

#2

ليست مشكلة، بل شيء عادي، إذ لا توجد آلية مدمجة لإعادة ترتيب الجدول بتعديل تسلسل مقدار المفتاح الأساسي، فبما أن هذه التسلسل primary keys ، فلا تقم بأي تعديل عليها طالما هي مرتبطة بمفاتيح أجنبية foreign keys. فأي تعديل في المفاتيح الأساسية primary keys يتطلب نشر هذه التعديلات في المفاتيح الأجنبية (cascading) ، وإلا سيختل تماسك قاعدة البيانات المتضمنة لها.

تخيل معي مثلا:

لدينا الجدول course ويحتوي على الحقول: course_id كمفتاح أساسي ومتتالي الترقيم، والحقل course_name

ولدينا الجدول st_degrees ويحتوي على الحقل st_no و course_id ، كلاهما مفتاح أساسي، بينما الحقل course_id مفتاح اجنبي من الجدول courses ، بالإضافة للحقل degree.

تخيل معي لو قمنا بحذف أحد المقررات من الجدول courses، وقمنا بإعادة ترتيب له وفقا لترتيب الحقل course_id. لو تركنا قاعدة البيانات كما هي لاختل تماسكها consistency وصحتها integrity. ولضمان هذين الشرطين لو قمنا بتصحيح القيم في الجدول st_degree في الحقل course_id ، سنجد أنها عملية مستهلكة للوقت والموارد time and resourse consuming وستؤثر سلبا على أداء قاعدة البيانات.

لذا أقول لك: دعه كما هو بعد الحذف ولا داعي لإعادة الترتيب.

فكر بطريقة أخرى

#3

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

اخير الكريم انا على علم بالامور التي تفضل بها ولكن مع ذلك اريد كيفيت تريبها

1) انا لا يوجد عندي فورن كي

2) انا احتاج الترتيب لانه عند إجراء عملية إضافت ركورد جديد قوم من خلال البرنامج بحساب عدد الاسطر واظيف لها واحد ( count + 1 ) وناتج هذا القيمه يكون بلاايمري كي للركورد الجديد

إذا تخيلت نعي انا قمنا بحذف رقم من اي مكان غير اخر رقم في التيبل في هذا الحال سوف يتشابه الرقم

الرجوا الرد على هذا السؤال في اسرع وقت ممكن

وشكرا

#4

الأخ عبد الوهاب

اقتباس
انا لا يوجد عندي فورن كي

ممكن جمل SQL التي تتكون منها بنية قاعدة البيانات DB Schema الخاصة بك.

اقتباس
انا احتاج الترتيب لانه عند إجراء عملية إضافت ركورد جديد قوم من خلال البرنامج بحساب عدد الاسطر واظيف لها واحد ( count + 1 ) وناتج هذا القيمه يكون بلاايمري كي للركورد الجديد

لماذا كل هذا التعب، في SQL server 7 و 2000 توجد خاصية اسمها identity عند إنشاء الجدول( لتشغيلها في 7 تضع صح عليها، في 2000 تعملها yes) عندما تشغلها لن تحتاج لإدخال قيمة في حقل الidentity لأن SQL Server سيتكفل بزيادة القيمة تلقائيا، ومع استعمال هذه الخاصية ستتضمن الuniqueness لقيم هذا الحقل.

وتتبع لها الخاصيتان identity seed (القيمة الابتدائية لحقل الidentity، افتراضيا هي واحد) و identity increment( مقدار الزيادة، افتراضيا هو واحد أيضا).

بعد تفعيل الخاصية identity ستكون جملة SQL لإدخال البيانات في الجدول بالشكل التالي:

sql = "insert into table1 values('" + Me.TextBox1.Text + "')"
 cn.Execute(sql)

شرح: الجدول table1 فيه حقلين، أحدهما اسمه jj من نوع int مع دعم الincrement والآخر hh من نوع ntext ( معليش حصلت عندي أزمة أسماء في لحظة عمل الجدول :) ).

لاحظ أن بارامترات جملة SQL هي مدخلات لجدول من حقل واحد فقط من نوع نصي (وليس عددي)، وذلك لأن الحقل الidentity لا يحتاج لإدخال قيمة فيه، ولو حاولت، سيرفض قيمتك المدخلة.

فكر بطريقة أخرى

#5

انا غلبتك معي كتير كتير بس المكله إنه الترتيب الصفوف ببفيدني في عمليات إخري وكل الحل بعتمد على الترتيب هذا

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

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