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

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

صورة
- - - - -

اضافة مفتاح اساسي


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

#1 AL BASSAM

AL BASSAM

    عضو

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

تاريخ المشاركة 14 February 2008 - 04:47 PM

السلام عليكم
يا اخوة في عندي مشكلة وهي اضافة مفتاح اساسي او با الاحرى تعديل حيث انه يوجد عندي جدول فيه اربعة حقول والان المفاتح الاساسي مكون من حقلين والان اريد ان يكون المفتاح الاساسي مكون من 3 حقول فكيف يمكني ان اقوم بهذا التعديل والجدول الذي تم تكوينه هو
create table country(
Cod_Country varchar2(6),
Name_Country varchar2(20),
Cod_City varchar2(4),
Name_City varchar2(20),
constraint country_pk primary key (Cod_Country,Cod_City)
);

والان اريد ان اضيف الى المفتاح الاساسي اسم المدينة بحيث يكون المفتاح الاساسي مكون من 3 حقول با الشكل التالي
primary key (Cod_Country,Cod_City,Name_City)
علما بان الجدول الان فية بيانات ولا اريد حذفها
ارجو ان اكون وضحت المشكلة وجزاكم الله خيرا

#2 Ahmed Farghaly

Ahmed Farghaly

    عضو نشط

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

تاريخ المشاركة 14 February 2008 - 06:29 PM

بسم الله الرحمن الرحيم

أخى الكريم فى هذه الحاله يمكن عمل drop للconstraints ثم إضافتها من جديد .
alter table country
drop constraints country_pk


ثم:-
alter table country
add constraints country_pk primary key(code_country,code_city,name_city)


ولكن يوجد ملحوظه مهمه فى هذا الموضوع وهى إنك بتقول إن فى data بالفعل فى الجدول .
مش هيبقى فى مشكله لو البيانات اللى فى الجدول مؤهله إنها تكون compound primary key فى هذه الحاله هيعمل validate ومفيش مشكله .
أما إذا كانت البيانات الموجوده فى الجدول غير مهيئه إنها تكون compound primary key .

إذاً يوجد هنا حلان :-
الأول : إما تعمل delete لهذه الأعمده وتعيد كتابة البيانات مره ثانيه بعد تعديل الconstraints وهذا فى حالة إن البيانات كميه صغيره .
الثانى : لو كانت البيانات كميه كبيره إذاً ممكن عند إضافه الconstraints تخليها novalidate
alter table country
add constraints country_pk primary key(code_country,code_city,name_city) novalidate

وهنا هيتجاهل البيانات القديمه وهيعمل enable للبيانات اللى
هتدخل بعد كده بس طبعا دى فيها مشكله بالنسبه لعمليات الquery وغير ذلك.
Oracle Developer

OCP

ومــا توفيـقــى إلا باللـــــه

#3 AL BASSAM

AL BASSAM

    عضو

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

تاريخ المشاركة 15 February 2008 - 07:07 AM

شكرا اخي احمد..
ولكن واجهتني مشكلة وهي ان هذا الجدول الذي اريد التعديل علية مرتبط بجدول ااخر ولم اسطيع حذف ال constraints

#4 Ahmed Farghaly

Ahmed Farghaly

    عضو نشط

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

تاريخ المشاركة 15 February 2008 - 03:13 PM

ممكن تعمل drop للconstraints بتاعة الforeign key أولاً ثم الconstraints بتاعة الprimary key
وبعد كده تعيد تخليق الconstraints بتاعة الprimary key ثم الforeign key
Oracle Developer

OCP

ومــا توفيـقــى إلا باللـــــه