إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مشكلة Ora-02291


1 رد (ردود) على هذا الموضوع

#1 NoorAdiga

NoorAdiga

    عضو

  • الأعضــاء
  • 8 مشاركة

تاريخ المشاركة 08 November 2008 - 11:46 AM

الســــلام عليكم
اريد ادخال ريكورد على جدول اسمه (Reservation_and_diagnosis) وهو مرتبط بالجداول كما في الصورة الملحقة
المشكلة هي انه عند عملية ادخال البيانات ... احصل على الerror
ORA-02291: integrity constraint (CLINIC.SYS_C005543) violated - parent
ولكن اذا غيرت اسم STUDENT_ID الى 0046364 يتم الادخال على الجدول بشكل سليم .. فقط لهذا المستخدم(الطالب)


عند تنفيذ الامر select Reservation_date,Student_id from Reservation_and_diagnosis ; لعرض المتوفر داخل جدول الحجوزات ... احصل على هذه النتائج
RESERVATI STUDENT_ID
--------- ----------
02-APR-06 46364
09-NOV-07 46364
09-MAR-08 46364
04-NOV-07 46364
09-AUG-08 46364
19-AUG-08 46364
11-NOV-08 46364
25-NOV-08 46364
25-NOV-08 46364
25-NOV-08 46364
15-MAR-08 46364

RESERVATI STUDENT_ID
--------- ----------
15-JUL-05 46364
10-AUG-05 46364
03-AUG-05 46364
09-NOV-07 46364
23-MAY-05 46364

16 rows selected.

وعند عرض الداتا الموجودة في جدول اسماء الطلاب ... احصل على التالي
select * from student_users;

STUDENT_ID STUDENT_
---------- --------
123456 000000
46364 nnnnnnnn
49090 99999999
22020 22222222


اما المشكلة بالتفصيل ... هي كالتالي
الخطوة الاولى:
desc Reservation_and_diagnosis;
احصل على
Name Null? Type
----------------------------------------- -------- -------------------
EMPLOYEE_ID NOT NULL NUMBER(3)
RESERVATION_DATE NOT NULL DATE
INTERVAL_SEQUENCE NOT NULL NUMBER(3)
STUDENT_ID NUMBER(7)
STUDENT_PRESENT NOT NULL VARCHAR2(1)
DIAGNOSIS VARCHAR2(500)

الخطوة الثانية ... ادخل صف للطالب 0046364
insert into Reservation_and_diagnosis values (3,to_date('12-12-2007','dd-mm-yyyy'),3,0046364,'Y','tooth pain');
والناتج ...
1 row created.

الخطوة الثالثة : احفظ الصف
commit;
والناتج
Commit complete.

الخطوة الرابعة ... ادخل صف ثاني لكن باستعمال رقم مختلف للطالب كالامر التالي
insert into Reservation_and_diagnosis values (3,to_date('12-11-2007','dd-mm-yyyy'),3,0022020,'Y','General check');

والناتج:
insert into Reservation_and_diagnosis values (3,to_date('12-11-2007','dd-mm-yyyy'),3,0022020,'Y','G
*
ERROR at line 1:
ORA-02291: integrity constraint (CLINIC.SYS_C005543) violated - parent key not
found



كل الاوامر والنتائج نسخ\لصق من SQL

كيف احل هذه المشكلة وادخل ريكورد لطلاب اخرين ... فجدول الحجوزات لا يحتوي الا على حجوزات للطالب 0046364 ... ؟!؟!
:blink:

ملفات مرفقة

  • ملف مرفق  SQL.JPG   41.64كيلو   56 عدد مرات التحميل


#2 NoorAdiga

NoorAdiga

    عضو

  • الأعضــاء
  • 8 مشاركة

تاريخ المشاركة 21 November 2008 - 12:22 PM

ما حد رد على سؤالي
:(

انا لقيت حل مؤقت للمشكلة ... هو ما بحل المشكلة كحل جذري .. انما بخليني اقدر ادخل ريكورد لطلاب تانيين بالجدول
انا لاحظت انو الجدول اللي فيه primary key مركب من مجموعة forign keys
هو سبب المشكلة .... لانها تكررت معي بجدول تاني غير جدول الحجوازات

الحل المؤقت كالتالي :
احذف ال constraint وخلي الجدول بدون Forign key
وانا بحالتي عملت drop
وبنيت الجدول مرة تانية بدون اي forign key
اما بالنسبة لاني اتاكد من البيانات انها صح ... هالعملية عم بعملها على الlevel
اللي فوق الdatabase
وبحالتي انا على موقع ال PHP
بتاكد من البيانات ... وبدخلها على الجدول ... بدون مساعدة الفورين كي !



نـــــــــــــــــــــــور