ON DUPLICATE KEY UPDATE
बस SET
करता है डुप्लीकेट कुंजी के मामले में आपके द्वारा दिए गए विवरण। यह अलग-अलग कॉलम मानों की तुलना नहीं करता है और केवल अलग-अलग लोगों को अपडेट करता है। ऐसा लगता है कि जब तक आपके पास UNIQUE KEY
के रूप में परिभाषित उचित कॉलम है, तब तक आप जो करना चाहते हैं, उसके लिए यह काम करेगा। या PRIMARY KEY
.
हालांकि, मैं सामान्य रूप से जो करता हूं वह सम्मिलित करता है और फिर त्रुटि पकड़ता है और यदि मुझे आवश्यकता हो तो एक अलग क्रिया करता है। डुप्लिकेट होने पर 2 प्रश्न जारी करने का इसका नकारात्मक पक्ष है, लेकिन मेरी राय में यह बहुत अधिक रखरखाव योग्य है।
उदाहरण:
$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare('INSERT INTO some_tbl (col1,col2,col3) VALUES (?,?,?)');
$values = array('Col 1 value','Col 2 Value', 'Col 3 Value');
try {
$db->execute($values);
} catch (PDOException $e) {
if($e->getCode() == 23000){
// dupe key do some other action whether update or otherwise
} else {
// rethrow non dupe errors
throw $e;
}
}