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

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

صورة
- - - - -

Triger يغني عن الـSequance


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

#1 الأسيف

الأسيف

    مشرف سابق وعضو مميز

  • فريق الإشراف
  • 203 مشاركة
  • الاسم الأول:أنس
  • اسم العائلة:القحطاني
  • البـلـد: Country Flag
  • الاهتمامات:إدارة و تقنية المعلومات الصحية
  • المنصب الحالي:IT Manager at Palestine Medical Center

تاريخ المشاركة 09 March 2004 - 03:22 PM

لأن الـSequance غير آمن وممكن أن يتعرض للحذف ..
إليكم هذا الـ Triger الذي أفادنا به أحد الخبراء ..والذي سياعدنا كثيراً في الترقيم التلقائي بطريقة مريحة وآمنة ..وطبعا يكتب قبل عملية الإضافة ..
ومثالنا هنا على جدول الطلاب ..
create triger student-s-no
before insert on student
declare
x number;
begin select max(s.no)+1 into x from stydent; :new.s-no:=nvl(x,1);
end;

آمل أن تجربوه ..

تم التعديل بواسطة الأسيف, 09 March 2004 - 03:28 PM.


#2 عبدالله ندا

عبدالله ندا

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 09 March 2004 - 03:49 PM

هلا اخي الاسيف
هذا التريجر لن يعمل لانه سوف يؤدي الي تايبول مايوتيتنج
اي انك تقوم بعمل سلكت من جدول يتم الانسرت عليه
وهذا الحل لتفادي السكونس لانه غالبا ما ينتج جاب في الارقام
ولا بد من التعامل به مثلا عند اصدرا ايصالات مرقمه
الحل لتلك المشكله هي عمل كود كنترول تايبول
تايبول عادي جدا يتم تخزين اخر رقم سيريال موجود عليه
و عند عمل سلكت عليه نكتب في نهايتها for update
وهذا يعني عمل lock لريكورد الذي نقوم بقرائته
ثم بعد السلكت نقوم بعمل ابديت للقيمه في الجدول الخارجي باضافة 1
هذه هي الطريقة الصحيحه للتعامل بعيدا عن السيكونس
لانها تعني اما العملية كلها commit او العمليه كلها ROLLBACK
شكرا لك اخي مع تمنياتي بالتوفيق

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#3 Oramaster

Oramaster

    مشترك

  • الأعضــاء
  • 112 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 March 2004 - 08:17 PM

مفيش مايمنع ان الكود يشتغل فى التريجر pre-insert الكود شغال تمام ومفيهوش مشكلة
الفكرة التانية انى انشي جدول احط فيه اعلى قيمة واستعلم منه حل آخر بس الحل الأول مفيهوش مشكلة ممكن التوضيح ؟؟؟؟؟؟؟؟؟؟
إنّ الحَمدَ لله نَحمُدهُ ونستعينهُ ونستغفرهُ ونتوبُ إليه ونعوذُ بالله من شرور أنفسنا ومن سيئات أعمالنا من يهده الله فلا مضل له ومن يضلل فلا هادي له وأشهد إن لا إله إلا الله وحده لا شريك له وأشهد أن محمدا عبده ورسوله

#4 هانى سند

هانى سند

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 13 March 2004 - 09:59 PM

التوضيح كما يقصده الاخ بلاك اند وايت ان سمح لي بان اوضح وجهة نظره ان هذا الكود المفروض ان يكتب
علي داتابيز تريجر كما قال الاخ الاسيف و هذا واضح من شكل التريجر و هو ليس في الفورم
و ان حدث ذلك فسينتج الايرورر الذي تفضل الاخ بلاك اند وايت بشرحه
لانه لا يجوز ان نعمل استعلام من جدول يحدث فيه ابديت او انسرت
و ملاحظتك صحيحة ora maseter
اذ ان يكمن استعمال الكود علي الفورم بدون مشاكل
تحت تريجر بري انسرت علي مستوي البلوك
اما علي الداتابيز تريجر before insert فسينتج الايرور
اتمني ان تصحح لي اخ بلاك اند وايت ان كنت مخطئ في فهمك
و الله الموفق

#5 عبدالله ندا

عبدالله ندا

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 14 March 2004 - 12:14 AM

مشكور اخي hanon_OCP علي التوضيح
و فعلا كما ذكرت
مع تمنياتي بالتوفيق

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#6 الأسيف

الأسيف

    مشرف سابق وعضو مميز

  • فريق الإشراف
  • 203 مشاركة
  • الاسم الأول:أنس
  • اسم العائلة:القحطاني
  • البـلـد: Country Flag
  • الاهتمامات:إدارة و تقنية المعلومات الصحية
  • المنصب الحالي:IT Manager at Palestine Medical Center

تاريخ المشاركة 15 March 2004 - 03:02 PM

يعني النتيجة النهائية لها النقاش الحلو .. :D
أن الترتيجر صحيح على الفورم .....
إذا هل نعتمده ........ :)

#7 Guest_عادل الشهري_*

Guest_عادل الشهري_*
  • الزائرين

تاريخ المشاركة 15 March 2004 - 06:57 PM

يعطيكم الف عافيه :)


أخوكم عادل

#8 هانى سند

هانى سند

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 15 March 2004 - 08:56 PM

والله تفاعل جميل
اذا كان سيعتمد كما يقول الاخ الاسيف :)
فيجب كتابته كالتالي
begin Select nvl( max(empno ),0) +1
Into :empno From emp ;
End ;

و هذا علي تريجر pre-insert
وعلي جدول emp

#9 OIL_97

OIL_97

    عضو

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

تاريخ المشاركة 24 March 2004 - 10:14 AM

مشكور أخ TAREK وماقصرت على التوضيح ومعليش جل من لاينسى ...
كنت أريد أسئلة الديفلوبر 6i و 9i ومعليش مرة ثانية ... وياليت تخدم أخوك oil بالسلف تست. والله يعطيك العافية مقدماً. :angry: ;)

#10 arab20002000

arab20002000

    عضو نشط

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

تاريخ المشاركة 24 March 2004 - 04:40 PM

يعطيكم الف عافيه