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

LAST_INSERT_ID() $db->insert_id के बराबर नहीं है?

समस्या यह है कि LAST_INSERT_ID(...); एक तर्क के साथ उत्पन्न आईडी वापस नहीं करता है बल्कि इसके बजाय दिए गए मान को LAST_INSERT_ID() की "स्मृति" में सेट करता है और इसे वापस कर देता है। इसलिए, आपके पहले निष्पादन में कोई ऑटो इंक्रीमेंटेड आईडी उत्पन्न नहीं हुई थी (आपने स्वयं मूल्य प्रदान किया था) और LAST_INSERT_ID() वापसी 0 . अपने निम्नलिखित निष्पादनों में आप next+1 . मान सहेजते हैं LAST_INSERT_ID() . के आंतरिक संग्रहण में , जो मान लौटाता है। इस व्यवहार का वर्णन MySQL में 12.14 सूचना कार्य :

वास्तव में, आप LAST_INSERT_ID() को छोड़ सकते हैं कॉल करें और इसके बिना काम करें।

INSERT INTO
    officeRechNr (jahr,monat,zahl)
VALUES
    (?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1

यह पंक्ति (दिए गए मान के साथ) सम्मिलित करेगा या काउंटर बढ़ाएगा।

यदि आप किसी दिए गए वर्ष और महीने के लिए वर्तमान काउंटर चाहते हैं तो आप एक साधारण चयन कथन चलाते हैं। ध्यान रखें कि आपको लेन-देन या लॉक की आवश्यकता हो सकती है क्योंकि एक अलग क्लाइंट काउंटर को SELECT स्टेटमेंट के साथ लाने से पहले बढ़ा सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlalchemy सत्र में वस्तुओं को ताज़ा करने के बारे में

  2. MySQL - ग्रुप बाय के साथ सशर्त COUNT

  3. ईवेंट के साथ सभी ईवेंट चुनें-> शेड्यूल-> केकपीएचपी में प्रारंभ और समाप्ति तिथियों के बीच की तिथि

  4. क्या पीडीओ के साथ एक MySQL तैयार कथन को बंद करने के लिए कोई कार्य है?

  5. Symfony2 AJAX कॉल पर खाली JSON लौटाता है जबकि चर खाली नहीं है