الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Triger يغني عن الـSequance

Featured Replies

بتاريخ:

لأن الـ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;


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

تم تعديل بواسطة الأسيف

بتاريخ:

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

بتاريخ:

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

بتاريخ:

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

بتاريخ:

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

بتاريخ:
  • كاتب الموضوع

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

بتاريخ:

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


أخوكم عادل

بتاريخ:

والله تفاعل جميل
اذا كان سيعتمد كما يقول الاخ الاسيف :)
فيجب كتابته كالتالي

begin Select nvl( max(empno ),0) +1
     Into :empno From emp ;
 End  ;


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

  • بعد 2 أسابيع...
بتاريخ:

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

بتاريخ:
يعطيكم الف عافيه

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.