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

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

صورة
- - - - -

Erorr In Merge Query


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

#1 lo2lo2a

lo2lo2a

    عضو

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

تاريخ المشاركة 22 February 2008 - 08:01 PM

السلام عليكم ورحمة الله وبركاته
انا عملت جدول اسمه employees بنفس هيكل emp تمام على المستخدم scott
ودخلت فيه بيانات ولما اجيت اعمل merge بين الجدولين ظهرتلي المشكله دي
ORA-38104: Columns referenced in the ON Clause cannot be updated: "M"."EMPNO"
مع اني راجعت الكود اكتر من مره ومتاكده من صحته
بس مش عارفه ايه المشكله
وده الكود
merge into employees m using emp eon (m.empno=e.empno)when matched then update set empno=e.empno,ename=e.ename,job=e.job,mgr=e.mgr,hiredate=e.hiredate,sal=e.sal,comm=e.comm,deptno=e.deptnowhen not matched then insert(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno);
وجزاكم الله خيرا

نعيب زماننا والعيب فينا وما لزماننا عيب سوانا

#2 Ahmed Farghaly

Ahmed Farghaly

    عضو نشط

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

تاريخ المشاركة 22 February 2008 - 08:21 PM

بسم الله الرحمن الرحيم

الخطأ هنا إن انتى المفروض فى الـupdate ماتعمليش update للـprimary key لأنه موجود بالفعل .
يعنى when matched معناها إذا تساوى الـprimary key مع الـprimary key إذاً الـحقهةشقغ نثغ موجود فى الجدولين .
إذاً لا يصح إن انا أضيف هذا العمود وهو الـempno معايا فى الـupdate .

يبقى الكود هيبقى كده
merge into employees m
using emp e on (m.empno=e.empno)
when matched then update set
ename=e.ename,
job=e.job,mgr=e.mgr,hiredate=e.hiredate,
sal=e.sal,comm=e.comm,deptno=e.deptno
when not matched then insert(empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno)

Oracle Developer

OCP

ومــا توفيـقــى إلا باللـــــه

#3 lo2lo2a

lo2lo2a

    عضو

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

تاريخ المشاركة 23 February 2008 - 08:29 AM

جزاك الله خيرا
فعلا كده ودلوقتي ضبطتي معايا
نعيب زماننا والعيب فينا وما لزماننا عيب سوانا