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

mysql - डालने के बाद प्राथमिक कुंजी प्राप्त करें अनदेखा करें

दस्तावेज़ीकरण LAST_INSERT_ID() . के लिए कहते हैं:

यह जानकर, आप इसे एक बहु-चरणीय प्रक्रिया बना सकते हैं:

  • इग्नोर डालें
  • यदि LAST_INSERT_ID(), तो हो गया (नई पंक्ति सम्मिलित की गई)
  • अन्यथा अपनी तालिका से अपनी_प्राथमिक कुंजी चुनें जहां (आपके सम्मिलित डेटा की अद्वितीय बाधाएं)

यू.एस. राज्यों के साथ उदाहरण:

id  | abbrev | other_data
 1  | AL     | ...
 2  | AK     |

UNIQUE KEY abbr (abbrev)

अब, एक नई पंक्ति सम्मिलित करना:

INSERT IGNORE INTO `states` (`abbrev`,`other_data`) VALUES ('AZ','foo bar');
> OK
SELECT LAST_INSERT_ID();
> "3"
// we have the ID, we're done

एक पंक्ति सम्मिलित करना जिसे अनदेखा कर दिया जाएगा:

INSERT IGNORE INTO `states` (`abbrev`,`other_data`) VALUES ('AK','duplicate!');
> OK
SELECT LAST_INSERT_ID();
> "0"
// oops, it already exists!
SELECT id FROM `states` WHERE `abbrev` = 'AK'; // our UNIQUE constraint here
> "2"
// there we go!

वैकल्पिक रूप से, इसे एक चरण में करने का एक संभावित समाधान है - REPLACE INTO का उपयोग करें इसके बजाय INSERT IGNORE INTO - वाक्यविन्यास बहुत समान है . हालांकि ध्यान दें कि दुष्प्रभाव . हैं इस दृष्टिकोण के साथ - ये आपके लिए महत्वपूर्ण हो भी सकते हैं और नहीं भी:

  • REPLACE हटाता है+पंक्ति को फिर से बनाता है
    • तो DELETE ट्रिगर हैं, उम, ट्रिगर
    • भी, प्राथमिक आईडी में वृद्धि की जाएगी, भले ही पंक्ति मौजूद हो
    • INSERT IGNORE पुरानी पंक्ति का डेटा रखता है, REPLACE इसे नए पंक्ति डेटा से बदल देता है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL GUID/UUIDs को संग्रहित करना

  2. विंडोज़ में mysql-python (नए संस्करण) स्थापित नहीं कर सकता

  3. C++ शब्द का चयन करने के लिए आप अपनी फुलटेक्स्ट बूलियन खोज कैसे प्राप्त करते हैं?

  4. क्या MySQL और Neo4j का एक साथ उपयोग करना एक अच्छा विचार है?

  5. यह 7 दिन पहले का डेटा क्यों नहीं खींच रहा है?