दस्तावेज़ीकरण
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
इसे नए पंक्ति डेटा से बदल देता है