حلمي أن في المعالي أمتي بتاريخ: 4 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 4 يناير 2007 الرجاء من الأخوه مساعدتي في مشكله تواجهني وهي طريقة تعريف الـ foreign key كاملا لاننه يطلع لي غلط وانا كاتبته بهذا الشكلforeign key (C_SSN) references Customer (SSN) on delete set null on update cascadeوالاوراكل اللي عندي اوراكل 10gانتظر الرد لأن التسليم يوم السبت و جــــــــــــــــــــــزاكم الله خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
smart angel بتاريخ: 4 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 4 يناير 2007 بسم الله الرحمن الرحيم السلام عليكمبعد التحية والأحتراماليك المثال التالى للتوضيح وهو ايضا على اوركال 10), CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id دا طبعا فى جدول الموضفين CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id),والله ولى التوفيقوفوق كل ذى علم عليممحمد نور الدين[email protected]oracle developer 10g اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
هانى سند بتاريخ: 4 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 4 يناير 2007 (معدل) السلام عليكم الأخ السائل طريقة الأخ SMART ANGEL هي الصحيحة بالنسبة لتعريف الFOREIGN KEY و لكن أحببت أن اضيف بعض الأشياء فلا يوجد في تعريف الFOREIGN KEY CONSTRAINT جملة ON UPDATE CASCADE فقط ON DELETE و المثال التالي يوضح لك SQL> ALTER TABLE SCOTT.EMP ADD 2 CONSTRAINT emp_dept_fk 3 FOREIGN KEY (DEPTNO) 4 REFERENCES SCOTT.DEPT (DEPTNO) ON DELETE SET NULL ON UPDATE CASCADE; REFERENCES SCOTT.DEPT (DEPTNO) ON DELETE SET NULL ON UPDATE CASCADE * يوجد خطأ عند سطر 4: ORA-01735: اختيار ALTER TABLE غير صالح SQL> ALTER TABLE SCOTT.EMP ADD 2 CONSTRAINT emp_dept_fk 3 FOREIGN KEY (DEPTNO) 4 REFERENCES SCOTT.DEPT (DEPTNO) ON DELETE CASCADE; تم تبديل جدول و لكن فهمت من الأخ السائل انه يريد عند تعديل مثلا رقم الادارة DEPT NO ان يتم تعديل رقم الادارة في الموظفين ايضا و يمكن تحقيق ذلك عن طريق التريجر الاتي CREATE OR REPLACE TRIGGER UPDATE_DEPTNO BEFORE UPDATE OF DEPTNO ON SCOTT.DEPT REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN UPDATE EMP SET DEPTNO=:NEW.DEPTNO WHERE EMP.DEPTNO=:OLD.DEPTNO; EXCEPTION WHEN OTHERS THEN RAISE; END UPDATE_DEPTNO; و ملحوظة أخيرة :اصدار قاعدة البيانات هو Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Productionو لم أعمل علي قاعدة بيانات 10G من قبل و يرجي توضيح ممكن عمل عليها ان كان هذا الكلام اختلف فيها ام لا ملحوظة أخري : تم تجربة ما سبق علي قاعدة البيانات 10 G و أعطي نفس النتيجة بالتوفيق تم تعديل 5 يناير 2007 بواسطة hanon_OCP اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
حلمي أن في المعالي أمتي بتاريخ: 4 يناير 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 4 يناير 2007 جزاكم الله خيرايعني وأنا اعمل انشاء للجدول مااكتب الـ FOREIGN KEYيعني اول انشأ الجدول بعدين اعمل ALTER للجدولكذا صحيح!!! اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
هانى سند بتاريخ: 4 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 4 يناير 2007 السلام عليكم الأخ الكريم يمكن استخدام اي من الطريقتين لانشاء الFOREIGN KEY فيمكن إنشاء الجدول اولا ثم عمل ALTER للجدول و انشاء و اضافة الCONSTRAINTS او إنشاء الجدول و انشاء الCONSTRAINT في نسف الوقت و بحملة واحدة ضمن جملة الCREATE TABLE هكذا CREATE TABLE SCOTT.EMP_COPY ( EMPNO NUMBER(4,0) NOT NULL, ENAME VARCHAR2(10 BYTE) NULL, JOB VARCHAR2(9 BYTE) NULL, MGR NUMBER(4,0) NULL, HIREDATE DATE NULL, SAL NUMBER(7,2) NULL, COMM NUMBER(7,2) NULL, DEPTNO NUMBER(2,0) NULL, CONSTRAINT EMP_DEPT_FK FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO) ON DELETE SET NULL ) بالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.