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

مشكلة في قاعدة بيانات sql

بدأه كارم سامي في 28 نوفمبر 2013 · 3 رد · 597 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

 

احاول انشاء قاعدة بيانات sql من خلال 2010   visual studio  لابطها ببرنامج سي شارب

 

وبعد اضافتها للبرنامج وانشاء الجداول الاحظ عند تعديل الداتا ظهور هذا الخطأ

 

 

مرفق بالصورة

 

post-235772-0-00724000-1385602391_thumb.

post-235772-0-00724000-1385602391_thumb.

تم تعديل هذه المشاركة بواسطة كارم سامي في 28 نوفمبر 2013 في 04:35

#2

السلام عليكم ...

 

  1. الــ SQL Server  مثله مثل باقي نظم إدارة قواعد البيانات , لا يتعامل مع البيانات إلا من خلال أوامر الــ sql  المعروفة (للحذف Delete FROM  و Insert Into  و Update )  .
  2. عندمت نفتح قاعدة البيانات من خلال أي اداة GUI  أو Front End مثل management studio  فإن هذه الأداة تقوم بتحويل الأفعال التي نقوم بها إلى اكواد sql  مثلا أنت حذفت سجل فإنه يولد الامر Delete From  و يرسله للسيرفر و لو  قمنا بإضافة بيانات فإنه يقوم بتوليد عبارة Insert Into  و هكذا بالنسبة لكل شي .
  3. بالنسبة لتوليد عبارة الــ Insert  فلا مشكلة فيها .
  4. أما بالنسبة لعبارتي الــ Update  و الــ delete  فيلزمها شرط Where  كي لا يحذف او يعدل كل البيانات .
  5. إذا كان الجدول يحوي مفتاح أساسي , فإن الــ Management Studio  يقوم بتوليد عبارات الــ Update  و الــ Delete From  باستخدام قيم المفتاح الأساسي .
  6. الآن ماذا لدينا .. لدينا الجدول دون مفتاح أساسي (primary key)  فيتم توليد عبارة الحذف و التعديل بناء على قيم كامل السجل .. مثلا لدينا جدول person  فيه حقلين name , age  دون مفتاح رئيسي و يحيوي البيانات التالية (mazen 30)  و (kamal 20)  و قمنا بتعديل عمر mazen  من 30 غلى 20 فيتم توليد العبارة التالية :update person set name='mazen' , age='20'WHER name='mazen' AND age = 30

     يعني باختصار يتم تعديل سجل واحد و هو سجل mazen  .

  7. أين تظهر المشكلة .. عندما لا يحوي الجدول مفتاح أساسي و يكون فيه سجلين أو أكثر متساويين بجميع الحفول ونحاول تغيير أحدهما .. سيتم توليد عبارة update  بشرط where  يحوي كل الحقول و لكن في السيرفر هذا الأمر يؤدي لتعديل سجلين و نحن على الواجهة نعمل على سجل واحد فيكتشف الــ Management studio  أن الامر الذي ولده ادى لتعديل سجلين و المستخدم يحرر سجل واحد على الواجهة فيظهر لنا رسالة الخطأ المذكورة .

  8. الحل بسيط جدا ... قم بإضافة مفتاح أساسي للجدول من نوع Identity  . و يتنهي الأمر و تقوم بالحذف و التعديل اعتمادا عليه .

بالتوفيق

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

سبب الرسالة ان الجدول لا يحتوي علي حقل Identity

الحل

قم باضافة حقل جديد علي ان تكون خصائصة Is Identity ويكون Primary key

بعد ذلك ستستطيع حذف هذا الصف

 

============

عذرا أخي الفاضل حسام

لم ألتفت لمشاركتك

===========

تم نقل المشاركة لمنتدي SQL Server

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 28 نوفمبر 2013 في 07:33

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

شكراً جزيلاً علي الشرح الوافي

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