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

MySQL InnoDB - लेन-देन के बारे में उलझन में

अगर समस्या कुछ इस तरह है "इस प्रविष्टि ने एक अद्वितीय कुंजी का उल्लंघन किया है ", कमिट हो जाएगा। आपको खुद को जांचना होगा कि क्या क्वेरी में त्रुटियां हैं, और यदि ऐसा है, तो ROLLBACK

उदाहरण के लिए यदि समस्या सर्वर के अनपेक्षित शटडाउन की है, तो प्रश्न 1 और 2 नहीं होंगे।

ऑफकोर्स, चूंकि यहां आपके 3 प्रश्न समान हैं, यह एक मूर्खतापूर्ण उदाहरण है। कम से कम lid बदलें देखने के लिए। आप एक त्वरित परीक्षण क्यों नहीं करते?

संपादित करें:आपने लेन-देन के उद्देश्य के बारे में अपना प्रश्न संपादित किया है।

लेन-देन का उद्देश्य वास्तव में डेटाबेस को एक सुसंगत स्थिति में रखना . है (ACID पर पढ़ें ), लेकिन यह तय करना प्रोग्रामर पर निर्भर है कि क्या सुसंगत है। देखें prodigitalson's answer संभावित php-way of error पकड़ने का एक उदाहरण देखने के लिए जो आपके लिए यह करता है। लेकिन जब आप किसी लेन-देन में होते हैं, तो अन्य प्रक्रियाओं में आपके लेन-देन में होने वाले परिवर्तन नहीं दिखाई देंगे - इसलिए परमाणु और पृथक।

CREATE TABLE `testkeys` (
  `lid` INT,
  `column_name` VARCHAR(50),
  UNIQUE KEY `testuniq` (`lid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

BEGIN;
INSERT INTO testkeys(lid,column_name) VALUES(1,'test 1');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2');
INSERT INTO testkeys(lid,column_name) VALUES(3,'test 3');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2b');
COMMIT;


  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 कंटेनर तक पहुंच

  2. MySQL में बाइनरी डेटा ठीक से संग्रहीत नहीं है

  3. मैसकल:पसंद के हिसाब से ऑर्डर करें?

  4. MySQL में COUNT(*) होने से हटाएं

  5. पहले विशिष्ट फ़ील्ड मान द्वारा आदेश देना