بتاريخ: 27 يناير 200521 سنة comment_25581 السلام عليكم ورحمه الله وبركاتهاخواني انا اسف لتضيع وقتكم في مشاكلي ولكني اسأل الله ان يبدلكم نوراولكني لدي مشكلة في انشاء primary_key ولا اريد استخدام الـ sequence لاني لو مسحت احد الحقول فسوف يحصل gap ولست بحاجة لهذا ولا اعرف اذا كان ما اقوله صحيح ام خطأ وارجو منكم ان تبلغوني اذا كان كلامي خاطئا .لهذا استعنت بالـ rownum ولكن المشكلة انه لا يستجيب الا للقيد الاول ويهمل باقي القيود وكانه غير موجود .فهل المشكلة في النسخة التي نصبتها في الجهاز ام ان العيب في انا, وهذه نسخة عن البرنامج الذي تحدث فيه المشكلة> create or replace procedure primary_key 2 is 3 nou inter.id11%type:=0; 4 begin 5 select count(*) into nou 6 from inter; 7 for i in 1..nou loop 8 update inter 9 set id11=i10 where rownum=i;11 end loop;12 end primary_key;وحتى لو قمت بالعمل من دون procedure فان المشكلة نفسها تواجهني update interset id11=2where rownum=2هل هذه مشكلتي وحدي ام انها حدثت معكم .فانا اليوم التمس من اخوتي المساعدة فهل من مجيب والسلام عليكم ورحمة الله وبركاته ........E_mail:[email protected] تقديم بلاغ
بتاريخ: 27 يناير 200521 سنة comment_25587 اخى ابى المجيد السلام عليكم ورحمة الله وبركاتهوالسلام على اهل العراق جميعاً من الموصل حتى البصرةواليك الحل التالى :بافتراض ان الجدول Employees به الحقل emp_idويوجد نموذج به حقول هذا الجدوليمكنك اخى استخدام الكود التالى فى Pre-Insert Trigger SELECTNVL(MAX(emp_id),0) +1 INTO :emp_id ;from employees وهذا يعمل على زيادة كود الموظف بمقدار واحد مع حدوث الفجوة فى التسلسلولك تحياتى اسامه سليمانالقاهرة تقديم بلاغ
بتاريخ: 29 يناير 200521 سنة comment_25778 Dear Questionaire FIRST , u cant put such condtion rownum = x unless x = 1 ( it's a logic think about it, rownum holds the count of the returned rows )SECOND to do it in ur way , u have to use cursor and select for update , and update where current of cursor i.e CREATE OR REPLACE PROCEDURE PRIMARY_KEY IS NOU number := 1; CURSOR EMP_CUR IS SELECT * FROM EMPS ORDER BY WHAT_EVER_U_WANT FOR UPDATE ; BEGIN FOR REC IN EMP_CUR LOOP UPDATE EMPS SET ID = NOU WHERE CURRENT OF EMP_CUR ; NOU := NOU + 1 ; END LOOP; COMMIT ; END PRIMARY_KEY;THIRD u said u wanna to avoid gaps ! but the code u write not avoid gaps upon delete cause it just creates a filed to be a sequanced primary key in. but after that any one can delete making the gaps that you wanna avoid so first let me ask u something , y u want avoid gaps ? u may want avoid gaps in a meaningfull field .. but one of the rules of the PK says " PK should be meaningless " Huss. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.