mariam1980 بتاريخ: 4 أغسطس 2007 تقديم بلاغ مشاركة بتاريخ: 4 أغسطس 2007 تحية طيبة اخواني لدي قاعدة معلومات اريد فيها جدول رئيسي وفيها جدولين فرعيين مرتبطات باجدول الرئيسي اريد تغيرر رقم ال id بتاع الجدول الرئيسي والجداول الفرعية يجب ان تتغير حتى تبقى محتفظة بالارتباط يعني كذلك احمد محمد رقم التسلسل بتاعه 120 ويدرس في قسم البايو وهذه في جدول الاقسام ايضا با الرقم 120 ولديه سيارتين ايضا بالجدول الاخر تحت رقم 120 وكلها مرتبطة بالجدول الرئيسي اريد تغيير رقم 120 مثلا الى رقم 9599 ولكن انا تكلمت عن احمد فقط لاكن قاعدة معلوماتي فيها ما يقارب 300 الف شخص واريد تغيير رقم الاي دي بتاعهم ولكن اريدها كلها تكون بتسلسل جديد يعني يبدي التسلسل من 20000 وينتهي ب 320000وجميع الجداول الفرعية يجب ان تتغير معه فهل يوجد مثل هذا الحل ام لا ------ وشكرابانتظار اجابتكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 5 أغسطس 2007 تقديم بلاغ مشاركة بتاريخ: 5 أغسطس 2007 يمكنك انشاء trigger على مستوى الجدول الذي يحتوى المفتاح الرئيسي primary keyوعند التعديل فى مفتاح الجدول الرئيسي يتم التعديل مباشرة فى الجداول الاخرى التى تحتوى المفتاح الاجنبي Foregin keyاليك هذا المثال على جدول الemp , dept مع المستخدم scott انشئ هذا الtrigger اولا SQL> create or replace trigger t_dept before update of deptno on dept for each row 2 begin 3 update emp set deptno = :new.deptno where emp.deptno = :old.deptno; 4 end; 5 / Trigger created. ------------------ SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 02-NOV-04 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 8888 amgad analyst 7566 01-JAN-07 1000 1 88 ------------- SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 88 aaaaa ccccc ----------------------------- نفذ امر تعديل كود الادارة SQL> update dept set deptno = 99 where deptno=88; 1 row updated. -------------------- الجداول بعد التعديل SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 99 aaaaa ccccc ------------- SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 02-NOV-04 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 8888 amgad analyst 7566 01-JAN-07 1000 1 99 ----------------- فكرة الحل : من مشاركة سابقه بالمنتدى للأخ / جمال اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mariam1980 بتاريخ: 15 سبتمبر 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 سبتمبر 2007 (معدل) اولا اشكرك على الاجابة شكرا جزيلا جدا جدا وثانيا : كلامك صحيح ولكن انا اريد ان اغير اسماء يبلغ تعدادهم 500000 خمسمائة الف قيد كيف تكون العملية ولك الشكر يااخي وانا اسفة على الازعاج تم تعديل 15 سبتمبر 2007 بواسطة mariam1980 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 15 سبتمبر 2007 تقديم بلاغ مشاركة بتاريخ: 15 سبتمبر 2007 - السؤال غير واضح ؟ اريد ان اغير اسماء يبلغ تعدادهم 500000 خمسمائة الف - هل الاسم يعتبر مفتاح الجدول ؟؟ - يجب التأكد من ان الاسم الجديد .. غير مسجل من قبل كمفتاح اساسى التعديل يتم سواء من خلال اوامر sql مباشرة أو اوامر Pl-sql داخل الفورم مثلا .. باستخدامloop + cursor بافتراض معرفة الاسماء الجديده والاسماء الحالية بمعنى اخر .. يتم تنفيذ التعديل بالجدول .. مع استخدام أمر ال update ..---أوهل السؤال عن تغيير رقم الموظف أو ال id ل500000 موظف ؟ بانشاء مسلسل جديد لهم .. ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mariam1980 بتاريخ: 21 سبتمبر 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 21 سبتمبر 2007 - السؤال غير واضح ؟ اريد ان اغير اسماء يبلغ تعدادهم 500000 خمسمائة الف - هل الاسم يعتبر مفتاح الجدول ؟؟ - يجب التأكد من ان الاسم الجديد .. غير مسجل من قبل كمفتاح اساسى التعديل يتم سواء من خلال اوامر sql مباشرة أو اوامر Pl-sql داخل الفورم مثلا .. باستخدامloop + cursor بافتراض معرفة الاسماء الجديده والاسماء الحالية بمعنى اخر .. يتم تنفيذ التعديل بالجدول .. مع استخدام أمر ال update ..---أوهل السؤال عن تغيير رقم الموظف أو ال id ل500000 موظف ؟ بانشاء مسلسل جديد لهم .. ؟ تحية طيبة واشكررررررك على وقفتك معي واجابتي السؤال كالتالي لدي جدول كالتالي id_no name work id_dept--------- ----------- ---------- -------------1543 mariam tech. 5647والجدول الثاني كالتالي id_dept dept school. note----------- -------- ----------- --------5647 info hgej ljlkjkl5647 fdfd hvcf ljlkjkl5647 ierr fdfdf ljlkjkl5647 dfdf hbvj ljlkjklالارتباط حاصل من خلال ال اي دي ديبت id_dept اريد تغيير رقم ال id_dept في الجدول الفرعي ليكون مشابها لرقم id_noالذي في الجدول الرئيسي حتى يمكنني اعادة ارتباط الجدول الفرعي عبر ال id_noعلما ان كمية القيود الموجودة كبيرة جدا جدا حيث تبلغ ما يقارب ال500000الف قيد راجين مساعدتيانا فكرت واقترحت على نفسي ان افتتح جدول جديد يرتبط مع ال الجدول الرئيسي واكتب كد يقوم بنقل المعلومات من الجدول الفرعي الى الجدول الثاني ويعطي رقم اي دي مشابه للجدول الرئيسي في الجدول الجديد ويلصق المعلومات فيه والامر اليكم فكرو معي ولكن اكتبو لي الاكواد مع ذلك لان اني بعد وقف تفكيري اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mom7800 بتاريخ: 27 سبتمبر 2007 تقديم بلاغ مشاركة بتاريخ: 27 سبتمبر 2007 بسم الله الرحمن الرحيم جربى تعملى database triggerالاول create or replace trigger set_null before update on dept for each row begin update emp set emp.deptno = null where emp.deptno= :old.deptno; end; / الثانى CREATE OR REPLACE TRIGGER change_value after update on dept for each row begin update emp set emp.deptno = :new.deptno where emp.deptno is null ; end; / مع تغيير اسماء الاعمدة بالموجودة عندكعن تعديل فى pk in masterهيعدلin detail اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.