تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعذر عمل انسيرت لجدول من جدول اخر بسبب المفتاح الأساسي
#1
السلام عليكم 

عندي جدولين SQL SERVER

1.الجدول الأول

  الرقم  |  الاسم  |  العمر

2.الجدول الثاني:

الاسم |العمر

 احمد  |25
  خالد  |25
محمد  |20

اريد أعمل انسيرت للجدول الأول من الجدول الثاني ليعطيني نتيجة كالتالي (مع العلم إن حقل الرقم في الجدول الأول Primary Key)

الرقم|الاسم|العمر
   1  | احمد  |25
   2  |  خالد  |25
   3  |محمد  |20

طبعا استخدمت جملة انسيرت الاتية

كود :
insert into t1 (id,name,age) select @id,name,age from t2

طبعا الكود اللي فوق ينفع معي دائما بس الاختلاف هنا ان عندي id مفتاح اساسي

بعدين عملت استعلام Max(id) 

وعملت جملة for 

PHP كود :
    For As Integer 1 To dt_chex_pieces2_true.Rows.Count
            Dim Max_id 
As Integer Max_id_t1() + x
            Dim name_t2 
As String dt_t2.rows(x)("name").tostring
            Dim age_t2 
As String dt_t2.rows(x)("age").tostring
            Insert_t1
(Max_idname_t2age_t2 'طبعا جملة الانسيرت موجودة في ميديول
        Next 



المطلوب/ طريقة عمل انسيرت من الفيجول بيسك أو التعديل على الأكواد أعلاه

وهذي الرسالة اللي تطلع لي 
Violation of PRIMARY KEY constraint 'PK_Orders'. Cannot insert duplicate key in object 'dbo.Orders'.
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام

وهو في حالة insert يجب عدم ذكر العمود الترقيم التلقائي لهذا حصل duplicate primary key أي تكرار مفتاح رئيسي
بمعنى في حالة سؤال عدم وضع id الخاصة ب الامر insert والاكتفاء ب(name,age) مع انه يفضل ان تكون اسماء الجاداول اسماء الاعمدة بين قوسين [] مثل ([name],[age])

اعتقد التعديل الصحيح يكون هكذا
كود :
INSERT INTO [t1] ([name], [age])
SELECT [name], [age]
FROM   [t2]
WHERE  [id] = @id
الرد }}}
#3
(07-11-16, 11:40 AM)ممدوح كتب : وعليكم السلام

وهو في حالة insert يجب عدم ذكر العمود الترقيم التلقائي لهذا حصل duplicate primary key أي تكرار مفتاح رئيسي
بمعنى في حالة سؤال عدم وضع id الخاصة ب الامر insert والاكتفاء ب(name,age) مع انه يفضل ان تكون اسماء الجاداول اسماء الاعمدة بين قوسين [] مثل ([name],[age])

اعتقد التعديل الصحيح يكون هكذا
كود :
INSERT INTO [t1] ([name], [age])
SELECT [name], [age]
FROM   [t2]
WHERE  [id] = @id

جربت وحذفت المفتاح من جملة الانسيرت وما ضبطت معي للأسف

أتوقع المشكلة مو في جملة الانسيرت لأني استخدمها في اكثر من مكان وكويسة معايا (الفرق هنا ان فيه مفتاح اساسي)
اتوقع المشكلة في جملة for
الرد }}}
تم الشكر بواسطة:
#4
السؤال:

لماذا تقومي بتعيين قيمة id بنفسك، أليس هو ترقيم تلقائي؟

كود :
For x As Integer = 1 To dt_chex_pieces2_true.Rows.Count
   Dim name_t2 As String = dt_t2.rows(x)("name").tostring
   Dim age_t2 As String = dt_t2.rows(x)("age").tostring
   Insert_t1(name_t2, age_t2)  'طبعا جملة الانسيرت موجودة في ميديول
Next

ما الفكرة التي تودين التوصل لها؟ لأن الاسلوب غريب!
الرد }}}
تم الشكر بواسطة:
#5
(07-11-16, 01:23 PM)ممدوح كتب : السؤال:

لماذا تقومي بتعيين قيمة id بنفسك، أليس هو ترقيم تلقائي؟

كود :
For x As Integer = 1 To dt_chex_pieces2_true.Rows.Count
   Dim name_t2 As String = dt_t2.rows(x)("name").tostring
   Dim age_t2 As String = dt_t2.rows(x)("age").tostring
   Insert_t1(name_t2, age_t2)  'طبعا جملة الانسيرت موجودة في ميديول
Next

ما الفكرة التي تودين التوصل لها؟ لأن الاسلوب غريب!

الفكرة ببساطة ابغى انقل بيانات من جدول لآخر (إنسيرت وليس اوبديت) والجدول المنقول له البيانات به مفتاح اساسي وأنا اعطيه القيمة عن طريق max +1
اما الترقيم التلقائي ما يرقم معي جربت وحذفت حقل رقم الايدي من جملة الانسيرت وما ضبطت معي
اما جملة for 
فأنا عملت for يعد من 1 إلى رقم اخر صف في الجدول
عشان يسوي جملة الانسيرت لكل صف في الجدول
الرد }}}
تم الشكر بواسطة:
#6
(07-11-16, 03:09 PM)اليوم مبتدئة وغداً محترفة كتب : اما الترقيم التلقائي ما يرقم معي

ممكن توضيح

طريقة عمل ترقيم تلقائي في SQL SERVER مختلفة عن ACCESS
حيث في SQL SERVER نحدد أولا نوع بيانات العمود ب int ثم نذهب لخاصية العمود Identity Specification ومنها (Is Identity) نضعها Yes
وهذه الخاصية ليست موجودة في قائمة الخصائص الجانبية الشبيه بخصائص أدوات الفجوال إنما تكون في أسفل نافذة إنشاء الأعمدة

ملاحظة:
1- الجدول لا يمكن أن يحتوي على أكثر من عمود ترقيم تلقائي واحد
2- يمكن أن نحدد مجموعة أعمدة على أن تكون مفتاح رئيسي (قليل من يحتاجها)
الرد }}}
#7
السلام عليكم ورحمة الله وبركاته
في البدايه احب ان - اؤكد علي كلام اخي ممدوح
__________
- اي انك سوف تنشئين جدولين - كما تفضل اخي ممدوح
-ثم تقومين بجلب كل البيانات الموجوده في  الجدول الاول  "بجملة سيلكت" وتوضع القيمه في داتا تابل مثلا او داتا جريد او داتا سيت
- ثم بجمله انسيرت البيانات دي الي موجوده في الداتا تابل او الخ.....  "اعمل لها انسيرت في " الجدول الثاني
- لكن بعد عمل حقل ID في الجدول الثاني المستقبل للبيانات  كما تفضل الاخ ممدوح في خصائص الحقل - IDENTITY
قيمة الزياده ب 1
# دي هيا الخطوات الي المفروض تعمليها -
مش هتفرق بقي  حقل اساسي او مش اساسي
- انما الكود الموجود الي كنت بتستخدميه - ده  مثلا - هاتلي من الجدول الاول من الحقول , حقل 1, حقل 2,الخ..- ما يساوي الحقل اسم الحقل ايا يكن   ,في الجدول التاني

يستخدم في حالو البحث عن بيانات او ربط الجداول برمجيا في حالة وجود قيمة في الجدولين

هذا اجتهاد والعلم لله وحده
اللهم صلي علي نبي (الرحمه) محمد رسول الله وبارك علي اله وصحابته والتابعين  واحقن دماء امتنا واجعل بأسنا علي اعدائنا يا ارحم الراحمين
[b]امين [/b]



الرد }}}
#8
فعلا ضبط معي غيرت خاصية الترقيم التلقائي وألغيت جملة for وعدلت جملة الانسيرت وخليتها بدون الايدي
الرد }}}
تم الشكر بواسطة: ممدوح


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف يتم عرض جدول من قائمة listbox في داتاقريدفيو ahmedfa71 5 879 04-09-25, 02:59 PM
آخر رد: ahmedfa71
  [VB.NET] استعراض بيانات في Datagridview واضافة جميع البيانات لجدول محدد sql skode 0 489 12-01-25, 12:50 AM
آخر رد: skode
  اريد كود يحذف جميع سجلات جدول بقاعدة بيانات اكسس دفعه واحده khalidalwdi 2 640 18-11-24, 01:02 AM
آخر رد: rdxdz
  أسرع طريقة يمكن بها نقل جدول Table من قاعدة بيانات على النت إلى أخرى محلية mmaalmesry 2 595 19-10-24, 09:26 PM
آخر رد: mmaalmesry
  أريد تحديد صلاحيات المستخدمين عن طريق حقل في جدول قاعدة البيانات F.H.M 0 329 12-09-24, 06:29 PM
آخر رد: F.H.M
  حل مشكلة تعذر تحميل الملف أو التجميع ل scannerlib ahlamalgomate2020 0 299 01-09-24, 03:05 PM
آخر رد: ahlamalgomate2020
  [VB.NET] السلام عليكم لدي جدول فرعي وارد تحديث الجدول الرئيسي raedre22 2 372 06-07-24, 12:50 PM
آخر رد: raedre22
  نقل ملف pdf من جدول لجدول آخر في قاعدة بيانات SQL صالح عبدالله 1 382 23-06-24, 02:38 AM
آخر رد: صالح عبدالله
  [VB.NET] تحديث بيانات فى كلاس من جدول سيكوال asdfar1977 6 729 26-02-24, 01:07 AM
آخر رد: asdfar1977
  مشكلة عدم اكتمال تنفيذ بسبب فصل الشبكة او التيار الكهربائي اثناء النتفيذ تناسيم 3 2,162 05-02-24, 10:04 PM
آخر رد: 01AHMED

التنقل السريع :


يقوم بقرائة الموضوع: