الانتقال إلى المحتوى
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.

خطأ عند تنفيذ Trigger

Featured Replies

بتاريخ:

السلام عليكم
عندى trigger مفروض لما اعمل insert لمستخدم جديد في جدول ال users يروح يدخل رقم المستخدم مع رقم كل الفورم في جدول ال Security

CREATE OR REPLACE TRIGGER new_user
after insert on users

for each row
declare
x number(10);
cursor us_forms is select form_id
                 from forms_reports; begin open us_forms ;
loop
fetch us_forms into x; exit when us_forms%notfound;
insert into security values (:new.user_id,x,null,null,null,null);
end loop;
close us_forms;
end;


لما باجى ادخل مستخدم جديد بيظهر خطأ
ORA-00001: unique constraint (HRMS.PK_SECURITY) violated
ORA-06512: at "HRMS.NEW_USER", line 10
ORA-04088: error during execution of trigger 'HRMS.NEW_USER'

بتاريخ:

البريمري كي بتاع جدول السكيورتي فيه مشكلة ، إما انك حضرتك مش بتباصي القيمة فداخل ب null ، او عملت تكرار
ياريت توضحي شكل الجدول بتاع السكيورتي والبراميري كي بتاع الجدول ده فين ؟؟

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

متهيألى ان ال primary key مفهوش مشكله هو عباره عن رقم المستخدو مع رقم الفورم الكود ده اصلا كنت عاملاه في procedure في فورم وكان شغال كويس بس قلت احسن انى اخليه trigger على ال database

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

لو سمحتم انا لسه معرفتش ايه المشكله في الكود ده مفروض ان من الكود ال key بيدخل ومفروض انه ميتكررش لان جمله ال insert داخل ال Cursor
اذا في خطأ في الكود ياريت حد يوضحه

بتاريخ:

السلام عليكم
الاخ الكريم
يجب ان يكون هناك عمود اخر تالت مع primary key التى قمت باضافتها وليكن serial ويكون واخد من sequence او تزود قيمة serial فى كل مرة على مستوى المستخدم
لانه على فرض ان المستخدم فتح فورمة معينة ونفس المستخدم فتح نفس الفورمة . حتلاقى عندك constraints بيشتغل علشان موضوع primary key لكن قم بعمل مسلسل او serial
ودا حيفيدك لو حبيت تعرف كام مرة المستخدم دخل على فورمة معينة

ياريت يكون الفكرة وضحت ....

بتاريخ:

السلام عليكم
اختي سارة...هادا وصف الخطأ...واتوقع انه الخطأ ليس بالكود...

ORA-00001: unique constraint violated



--------------------------------------------------------------------------------

Symptom:
When inserting or updating data, the following error is returned:

ORA-00001: unique constraint violated (<schema>.<constraint>)
Cause:
This error means that an attempt has been made to insert a record with a duplicate (unique) key. This error will also be generated if an existing record is updated to generate a duplicate (unique) key. Typically this is a duplicate primary key, but it need not be the primary key.

Remedy:
Only one of the following will be appropriate:

Remove the unique restriction.

Change the restriction to allow duplicate keys. An index could be changed to be a non-unique index, but remember that the primary key must always be unique.

Do not insert the duplicate key.

بتاريخ:

الاخت سارة ...
واحده واحدة كده .... اولا الكود مفهوش مشكلة برمجيا وتمام التمام
ثانيا : الكود من الناحية المنطقيه فيه مشكلة زي ما قال الاخ abdou1984 ، ان اليوسر ممكن يشتغل على الشاشة اكتر من مرة ، منطقيا بالكود الي نات حضرتك كتبتيه ده معنى كده ان اليوسر الواحد ما ينفعش يدخل على الشاشة الواحدة اكتر من مرة .......

ثالثاً : الايرور اللي طالع معناه انك كسرتي قيد موجود في البريمري كي بتاع الجدول ، وده بحاجة من اتنين ملهمش تالت ، يا اما قيمة البرايمي NULL ، يا أما فيه تكرار
عشان نعرف فين المشكلة بالظبط
محتاجين تبعتلنا نتيجة جملة السلكتاية ده select form_id from forms_reports
وكمان اسم اليوسر ايه اللي انت داخله بيه الشاشة ...
وان شاء الله نقدر نساعدك
سلام عليكم

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

السلام عليكم
اشكركم على الرد
انا وضعت ناتج جمله ال select وشكل الجداول المستخدمه بس بصراحه انا مش فاهمه ايه مشكله القلته عليها دى متهيألى ان الفكره العملاها فهمناها بطريقه تانيه
الجدول بتاع ال security مش اكتر ان بسجل فيه صلاحيات كل مستخدم على كل الفورم من حيث الدخول وعمل insert and update and delete

لانه على فرض ان المستخدم فتح فورمة معينة ونفس المستخدم فتح نفس الفورمة . حتلاقى عندك constraints بيشتغل علشان موضوع primary key لكن قم بعمل مسلسل او serial

بصراحه مش فاهمه يعنى ايه بس هحاول اوصل فكرتى
لو مستخدم عايز يفتح فورمه بيشوف له صلاحيه الدخول بيدخله لو لا مش بيدخله
الفكره اصلا ان عايزه لما اعمل مستخدم جديد في المشروع بدل ما ادخل رقم المستخدم الجديد مع رقم كل فورمه عشان بعدين املى الصلاحيات
اعمل trigger على مستوى ال database اول ما ادخل مستخدم جديد يضع في جدول ال security رقم المستخدم مع ال 26 فورم العندى انا كده مكررتش لانه مفروض يدخل لو رقم المستخدم 3
3 و1
3 و2
3 و3 وهكذا

Desktop.rar

تم تعديل بواسطة sara gamal

بتاريخ:

الاخت سارة المشكلة اتحلت مع حضرتك ولا لأ
لو اتحلت ممكن تضعي الحل للاستفادة

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

لا لسه المشكله زي ماهى لو وصلت لحاجه بأذن الله هكتبها

بتاريخ:

السلام عليكم
بالنسبة لحل هذه المشكلة أمامك اختيارين
الاول حذف ال fk الموجود على جدول ال security الخاص بالعمود user_id طبعا ده حل مش منطقي
الحل الثاني
وهو فقط عند انشاء الجدول يتم ترتيب الاعمدة غير ماتم ذكره يتم وضع عمود ال user_id قبل عمود form_id يعني يتم حذف جدول ال security
وإعادة بناؤه بالترتيب الاي قولته وهو وضع عمود user_id في الاول
منتظر التجربة

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

الحمد لله فعلا اتعملت جزاك الله خيرا طيب هو كان ينفع بدل ما انشئ الجدول مره اخرى اغير ترتيب الcolumns في جمله ال insert يعنى اخلى form_id الاول وبعدين user_id
ولا برده هيظهر نفس الخطأ

بتاريخ:

لا ماهي المشكلة بالفعل في تريتب عملية الادخال في التريجر فقط لاغير
فلو تركتي الجدول كما هو كان لابد من تغيير فقط الترتيب في جملة ال insert
ولكي يتم تجنب الاخطاء الاي زي دي لابد من كتابة وتحديد اسماء الاعمدة في جملة ال insert قبل ال values

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

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

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

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

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

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.