بتاريخ: 28 يونيو 200916 سنة comment_161620 انا عندي تريغر يقوم بترحيل البيانات من جدول الموظفين الى جدول التغييرات الوظيفية ولكن ليس كلما تم تغيير على بيانات الموظف وانما عند تغيير الوظيفة او الدائرة التابع لها وعملت كالتالي : CREATE OR REPLACE TRIGGER update_job_history AFTER UPDATE OF job_id,emp_dept_id ON employees FOR EACH ROW BEGIN INSERT INTO job_history (emp_id,job_id, department_id) VALUES(:old.emp_id,:old.job_id,:old.emp_dept_id); END; التريغر شغال تمام ولكن المشكلة انه يقوم بترحيل البيانات كلما عدلنا في بيانات الموظف سواء كانت الوظيفة او الدائرة او حتى الاسم يعني بيشتغل كلما عملنا تعديل على البيانات بشكل عام وليس فقط عندما اعدل الوظيفة او الدائرة ؟؟ ما الحل ؟؟؟ تقديم بلاغ
بتاريخ: 28 يونيو 200916 سنة comment_161622 السلام عليكم جرب كده CREATE OR REPLACE TRIGGER update_job_history AFTER UPDATE OF job_id,emp_dept_id ON employees FOR EACH ROW when (new.job_id<>old.job_id or new.emp_dept_id <>old.emp_dept_id ) BEGIN INSERT INTO job_history (emp_id,job_id, department_id) VALUES(:old.emp_id,:old.job_id,:old.emp_dept_id); END; تقديم بلاغ
بتاريخ: 29 يونيو 200916 سنة كاتب الموضوع comment_161653 اخي الكريم كلامك جميل ولكن انا بدي اسال سؤال :ما فائدة Of تحديد الحقول التي اذا حدث عليها تغيير ان يتفعل التريغر صح ؟ اذا ماذا استفدنا منها اذا كان التريغر يقوم بالترحيل على ايا حال من الاحوال يعني لو غيرت مش الادارة ومش الوظيفة يعني شي تاني مثل الاسمرح يرحل البيانات اذا ما فائدتها ؟تانيا التريغر لا يقبل ان يتفعل في ظل وجود محددات يعني constraint as unique or primary key وفي هذه الحالة ماذا استفدنا ايضا ؟؟؟ النتيجة ان التريغر الحالي ناقص ينقصه حل مشكلة المحددات وحل مشكلة التغيير بحيث اذا غير المستخدم الوظيفة او الدائرة يتفعل وغير ذلك لا يتفعل وشكرا لاهتمامك تقديم بلاغ
بتاريخ: 29 يونيو 200916 سنة comment_161658 اخي الكريم ممكن بس الاسكريبت بتاع جدول الموظفين وجدول التغييرات الوظيفية ، وان شاء الله اقولك فين المشكلة تقديم بلاغ
بتاريخ: 29 يونيو 200916 سنة كاتب الموضوع comment_161661 سكريبت جدول الموظفينCREATE TABLE EMPLOYEES( EMP_ID NUMBER(10), F_NAME VARCHAR2(30 BYTE), S_NAME VARCHAR2(30 BYTE), T_NAME VARCHAR2(30 BYTE), L_NAME VARCHAR2(30 BYTE), DOB DATE, POB VARCHAR2(50 BYTE), NATIONALITY NUMBER(3), GENDER NUMBER(1), CURRENT_ADDRESS VARCHAR2(100 BYTE), CARD_ID VARCHAR2(30 BYTE), CARD_ISSUE_DATE DATE, CARD_PLACE VARCHAR2(30 BYTE), PASSPORT_ID VARCHAR2(30 BYTE), PASSPORT_ISSUE_DATE DATE, PASSPORT_EXPIRE_DATE DATE, PASSPORT_PLACE VARCHAR2(30 BYTE), MARITAL_STATUS NUMBER(1), TEL1 VARCHAR2(30 BYTE), TEL2 VARCHAR2(30 BYTE), MOBILE1 VARCHAR2(30 BYTE), MOBILE2 VARCHAR2(30 BYTE), EMAIL VARCHAR2(100 BYTE), INTERNAL_TEL VARCHAR2(30 BYTE), EMP_DEPT_ID NUMBER(10), JOB_ID NUMBER(10), MANAGER_ID NUMBER(10), PASSWORD VARCHAR2(30 BYTE), STATUS NUMBER, SALARY NUMBER(8,3), EMP_TYPE NUMBER(1))سيكريبت جدول التغيرات الوظيفية CREATE TABLE JOB_HISTORY( EMP_ID NUMBER(10), START_DATE DATE, END_DATE DATE, JOB_ID NUMBER(10), DEPARTMENT_ID NUMBER(10), SALARY_EFFECT NUMBER(8,3), TYPE_TO_CHANGE NUMBER(1)) تقديم بلاغ
بتاريخ: 29 يونيو 200916 سنة comment_161670 حقيقي انا مش عارف ايه المشكلة ... انا عملت الجداول وكمان عملت التريجر والدنيا ميه ميه ولا كأنها زبادي في الخلاط مش عارففين المشكلة اصلا ... جايز عشان انت عامل كونسترين ممكن تبعت كل الاسكريبتات اللي على الجدولين دول PK ,FK واي حاجة تانية معمولة على الجدولين دول ؟؟؟ تقديم بلاغ
بتاريخ: 29 يونيو 200916 سنة كاتب الموضوع comment_161724 فقط معمول عليهم ال constraint التالية جدول بيانات الموظفين emp_id primary keyجدول التغيرات الوظيفية emp_id, job_id_dept_id primary key اخي الكريم التريغر بدون محددات يشتغل 100/100 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.