Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL और SQLite दोनों के लिए अद्वितीय बाधाएं और डालें या अपडेट करें

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`;

परिणाम हैं :-



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_last_id के साथ दौड़ की स्थिति ()

  2. MySQL डेटाबेस के लिए INFORMATION_SCHEMA तालिका बनाएं

  3. MySQL कार्यक्षेत्र से सीमा खंड निकालें

  4. मुझे विंडोज़ mysql सर्वर के लिए my.ini फ़ाइल फ़ाइल कहाँ मिल सकती है?

  5. Mysqldump:बैक अप लेने पर इन्सर्ट के लिए कॉलम नाम बनाएं