SQLite समाधान (mysql में समान सिद्धांत लागू होना चाहिए)
आप बस एक अद्वितीय अनुक्रमणिका जोड़ सकते हैं (कम से कम SQLite के लिए जिसके लिए यह है) ताकि आपके पास हो::-
DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
`id` INTEGER, //<<<<<<<<<< See notes below
`uuid` VARCHAR ( 64 ) NOT NULL,
`name` VARCHAR ( 32 ) NOT NULL,
`date` BIGINT NULL,
PRIMARY KEY ( `id` )
);
CREATE UNIQUE INDEX IF NOT EXISTS uuid_date ON `users` (`uuid`,`date`); //<<<<<<<<<<
-
नोट
AUTO_INCREMENT
SQLite के लिए विफलता का परिणाम है क्योंकि यह एक कीवर्ड नहीं है, SQlite में सही कीवर्डAUTOINCREMENT
है . हालांकि, इसे छोड़ दिया गया है क्योंकि इसकी शायद INTEGER PRIMARY KEY (याPRIMARY KEY (id)
निर्दिष्ट करके निहित) के रूप में आवश्यक नहीं है ) के परिणामस्वरूप एक uniqiue id स्वतः उत्पन्न हो जाएगी यदि सम्मिलित करते समय कॉलम के लिए कोई मान प्रदान नहीं किया जाता है। -
SQLite को स्वचालित रूप से जेनरेट की गई आईडी के लिए INTEGER की आवश्यकता होती है, INT की नहीं। NOT NULL और UNIQUE भी निहित हैं इसलिए उन्हें निर्दिष्ट करने की कोई आवश्यकता नहीं है।
यहां उदाहरण के दो सेट हैं, जिनमें से प्रत्येक uuid/date संयोजन को डुप्लिकेट कर रहा है और इस प्रकार डालने के बजाय अपडेट कर रहा है और उसी uuid के साथ लेकिन अलग-अलग तारीख और इसके विपरीत:-
INSERT OR REPLACE INTO `users` VALUES(null,'Fred01234567','Fred Bloggs the 1st','20180101');
INSERT OR REPLACE INTO `users` VALUES(null,'Fred01234567','Fred Bloggs the 2nd','20180101'); -- <<<< DUPLICATE
INSERT OR REPLACE INTO `users` VALUES(null,'Fred99999999','Fred Bloggs the 2nd','20180101'); -- <<<< different uuid same date
INSERT OR REPLACE INTO `users` VALUES(null,'Fred01234567','Fred Bloggs the 2nd','99999999'); -- <<<< same uuid different date
INSERT OR REPLACE INTO `users` (`uuid`,'name','date') VALUES('Fred76543210','Fred NotBloggs the 1st','20180202');
INSERT OR REPLACE INTO `users` (`uuid`,'name','date') VALUES('Fred76543210','Fred NotBloggs the 1st','20180202');
INSERT OR REPLACE INTO `users` (`uuid`,'name','date') VALUES('Fred99999999','Fred NotBloggs the 1st','20180202');
INSERT OR REPLACE INTO `users` (`uuid`,'name','date') VALUES('Fred76543210','Fred NotBloggs the 1st','99999999');
SELECT * FROM `users`;
परिणाम हैं :-