mmsalman87 بتاريخ: 28 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 28 يونيو 2009 انا عندي تريغر يقوم بترحيل البيانات من جدول الموظفين الى جدول التغييرات الوظيفية ولكن ليس كلما تم تغيير على بيانات الموظف وانما عند تغيير الوظيفة او الدائرة التابع لها وعملت كالتالي : 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; التريغر شغال تمام ولكن المشكلة انه يقوم بترحيل البيانات كلما عدلنا في بيانات الموظف سواء كانت الوظيفة او الدائرة او حتى الاسم يعني بيشتغل كلما عملنا تعديل على البيانات بشكل عام وليس فقط عندما اعدل الوظيفة او الدائرة ؟؟ ما الحل ؟؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 28 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 28 يونيو 2009 السلام عليكم جرب كده 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; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mmsalman87 بتاريخ: 29 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2009 اخي الكريم كلامك جميل ولكن انا بدي اسال سؤال :ما فائدة Of تحديد الحقول التي اذا حدث عليها تغيير ان يتفعل التريغر صح ؟ اذا ماذا استفدنا منها اذا كان التريغر يقوم بالترحيل على ايا حال من الاحوال يعني لو غيرت مش الادارة ومش الوظيفة يعني شي تاني مثل الاسمرح يرحل البيانات اذا ما فائدتها ؟تانيا التريغر لا يقبل ان يتفعل في ظل وجود محددات يعني constraint as unique or primary key وفي هذه الحالة ماذا استفدنا ايضا ؟؟؟ النتيجة ان التريغر الحالي ناقص ينقصه حل مشكلة المحددات وحل مشكلة التغيير بحيث اذا غير المستخدم الوظيفة او الدائرة يتفعل وغير ذلك لا يتفعل وشكرا لاهتمامك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdu1_far بتاريخ: 29 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2009 اخي الكريم ممكن بس الاسكريبت بتاع جدول الموظفين وجدول التغييرات الوظيفية ، وان شاء الله اقولك فين المشكلة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mmsalman87 بتاريخ: 29 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2009 سكريبت جدول الموظفين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)) اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdu1_far بتاريخ: 29 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2009 حقيقي انا مش عارف ايه المشكلة ... انا عملت الجداول وكمان عملت التريجر والدنيا ميه ميه ولا كأنها زبادي في الخلاط مش عارففين المشكلة اصلا ... جايز عشان انت عامل كونسترين ممكن تبعت كل الاسكريبتات اللي على الجدولين دول PK ,FK واي حاجة تانية معمولة على الجدولين دول ؟؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mmsalman87 بتاريخ: 29 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 يونيو 2009 فقط معمول عليهم ال constraint التالية جدول بيانات الموظفين emp_id primary keyجدول التغيرات الوظيفية emp_id, job_id_dept_id primary key اخي الكريم التريغر بدون محددات يشتغل 100/100 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.