Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle MERGE:केवल NOT MATCHED ट्रिगर होता है

मुझे लगता है कि आपने गलत समझा है कि विलय क्या है।

मुझे उम्मीद है कि आपकी टेबल कुछ इस तरह होगी:

CREATE TABLE TABLE_FOR_TESTS (
    d DATE,
    t NUMBER(8),
    CONSTRAINT TABLE_FOR_TESTS_PK PRIMARY KEY (d)
)

और फिर मर्ज स्टेटमेंट हो सकता है:

MERGE INTO TABLE_FOR_TESTS t
  USING (SELECT trunc(sysdate) d FROM DUAL) s
    ON (s.d = t.d)
  WHEN MATCHED THEN
    UPDATE SET t = t+1
  WHEN NOT MATCHED THEN         
    INSERT (d, t) VALUES (trunc(sysdate), 1)

जहां जॉइन टेबल की प्राथमिक कुंजी पर है और या तो उस पीके मान के लिए रिकॉर्ड मौजूद है या नहीं, इस पर निर्भर करते हुए अपडेट या सम्मिलित करें।

इसमें प्रति दिन अधिकतम एक रिकॉर्ड होगा और टी प्रति दिन इस कथन के निष्पादन की संख्या रखेगा (यह मानते हुए कि TABLE_FOR_TESTS पर कोई अन्य DML नहीं है)।

नोट:sysdate अपने आप में एक समय घटक शामिल करता है। trunc(sysdate) इसे हटाता है और समय को 00:00:00 पर सेट करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle डेवलपर टूल्स 12 इंस्टाल यह दावा करने में विफल रहता है कि मेरे पास Windows XP है। मेरे पास विंडोज 7 है

  2. Oracle के SYS_CONTEXT के लिए PostgreSQL और/या SQL सर्वर विकल्प

  3. Oracle tkprof फ़ाइलों में CPU समय और बीता हुआ समय के बीच अंतर का क्या कारण है

  4. किसी क्वेरी में कोई मिलान नहीं मिलने पर डिफ़ॉल्ट मान कैसे प्रदर्शित करें?

  5. SYSBACKUP विशेषाधिकार के साथ आम उपयोगकर्ता