SELECT
. द्वारा आप या तो पहले पता लगा सकते हैं कि यह वहां है या नहीं url
. द्वारा आईएनजी , या आप url
. बना सकते हैं क्षेत्र अद्वितीय:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
यह MySQL को डुप्लिकेट पंक्ति डालने से रोकेगा, लेकिन जब आप कोशिश करेंगे और सम्मिलित करेंगे तो यह एक त्रुटि की भी रिपोर्ट करेगा। यह अच्छा नहीं है—हालाँकि हम त्रुटि को संभाल सकते हैं, यह दूसरों को छिपा सकता है। इससे निजात पाने के लिए, हम ON DUPLICATE KEY UPDATE
. का उपयोग करते हैं वाक्य रचना:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
यह हमें एक UPDATE
प्रदान करने की अनुमति देता है एक अद्वितीय फ़ील्ड में डुप्लिकेट मान के मामले में कथन (इसमें आपकी प्राथमिक कुंजी शामिल हो सकती है)। इस मामले में, हम शायद modified_date
. को अपडेट करना चाहते हैं वर्तमान तिथि के साथ फ़ील्ड।
संपादित करें: जैसा कि ~unutbu
द्वारा सुझाया गया है , यदि आप डुप्लीकेट पर कुछ भी बदलना नहीं चाहते हैं, तो आप INSERT IGNORE
का उपयोग कर सकते हैं वाक्य - विन्यास। यह बस इस प्रकार काम करता है:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
यह केवल कुछ प्रकार की त्रुटियों को चेतावनियों में बदल देता है - सबसे उपयोगी रूप से, त्रुटि जो बताती है कि एक डुप्लिकेट अद्वितीय प्रविष्टि होगी। यदि आप कीवर्ड IGNORE
. डालते हैं आपके कथन में, आपको कोई त्रुटि नहीं मिलेगी—क्वेरी बस छोड़ दी जाएगी। जटिल प्रश्नों में, यह अन्य त्रुटियों को भी छिपा सकता है जो हालांकि उपयोगी हो सकती हैं, इसलिए यदि आप इसका उपयोग करना चाहते हैं तो यह सुनिश्चित करना सबसे अच्छा है कि आपका कोड सही है।