यदि आप एक अद्वितीय सूचकांक में कई स्तंभों का उपयोग कर रहे हैं और इनमें से कम से कम एक स्तंभ अनिवार्य है (यानी एक आवश्यक प्रपत्र फ़ील्ड), यदि आप सूचकांक में अन्य स्तंभों को NULL पर सेट करते हैं तो आप डुप्लिकेट पंक्तियों के साथ समाप्त हो सकते हैं। ऐसा इसलिए है क्योंकि अनूठे कॉलम में NULL मान को अनदेखा किया जाता है। इस मामले में, डुप्लिकेट की गई पंक्तियों से बचने के लिए अनन्य अनुक्रमणिका के अन्य स्तंभों में रिक्त स्ट्रिंग्स का उपयोग करें।
एक अद्वितीय सूचकांक में रंग:
(event_type_id, event_title, दिनांक, स्थान, url)
उदाहरण 1:
(1, 'बीबीक्यू', '2018-07-27', अशक्त, अशक्त)
(1, 'बीबीक्यू', '2018-07-27', अशक्त, अशक्त) // अनुमति और दोहराव।
उदाहरण 2:
(1, 'बीबीक्यू', '2018-07-27', '', '')
(1, 'बीबीक्यू', '2018-07-27', '', '') // इसकी अनुमति नहीं है क्योंकि इसे दोहराया गया है।
यहाँ कुछ कोड हैं:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`event_id` int(11) DEFAULT NULL,
`event_title` varchar(50) DEFAULT NULL,
`date` date DEFAULT NULL,
`location` varchar(50) DEFAULT NULL,
`url` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `event_id` (`event_id`,`event_title`,`date`,`location`,`url`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
अब यह देखने के लिए डालें कि यह डुप्लिकेट की गई पंक्तियों को अनुमति देगा:
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-27', NULL, NULL);
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-27', NULL, NULL);
अब इसे डालें और जांचें कि इसकी अनुमति नहीं है:
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-28', '', '');
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-28', '', '');
इसलिए, यहां कोई सही या गलत नहीं है। यह आप पर निर्भर करता है कि आपके व्यावसायिक नियमों के साथ क्या काम करता है।