अगर समस्या कुछ इस तरह है "इस प्रविष्टि ने एक अद्वितीय कुंजी का उल्लंघन किया है ", कमिट हो जाएगा। आपको खुद को जांचना होगा कि क्या क्वेरी में त्रुटियां हैं, और यदि ऐसा है, तो 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;