phpMyAdmin
 sql >> डेटाबेस >  >> Database Tools >> phpMyAdmin

क्या मैं ALTER TABLE के साथ लेनदेन का उपयोग कर सकता हूँ?

कुछ कथन (विशेष रूप से DDL ) MySQL में एक अंतर्निहित प्रतिबद्धता का कारण बनता है पहले उन्हें क्रियान्वित किया जाता है और वापस नहीं लाया जा सकता - इस तरह यह पहले के DML परिवर्तनों को भी वापस आने से रोकता है।

<ब्लॉकक्वॉट>

इस खंड में सूचीबद्ध बयान (और उनके लिए कोई समानार्थी शब्द) वर्तमान सत्र में सक्रिय किसी भी लेनदेन को निहित रूप से समाप्त करते हैं, जैसे कि आपने कथन निष्पादित करने से पहले एक COMMIT किया था . MySQL 5.5.3 के अनुसार, इनमें से अधिकांश कथन भी निष्पादित करने के बाद एक अंतर्निहित प्रतिबद्धता का कारण बनते हैं; अतिरिक्त विवरण के लिए, इस अनुभाग का अंत देखें।

चूंकि ALTER TABLE प्रभावित बयानों में से एक है, SQL बैच को प्रभावी ढंग से माना जाता है:

START TRANSACTION;
INSERT INTO `users` VALUES(NULL, 'User A', '[email protected]', '4', 'User A');

COMMIT; -- prevents ROLLBACK of insert(s), even if DDL fails
ALTER TABLE `users` CHANGE `level` `level` TINYINT(3) UNSIGNED NOT NULL;

सुझाया गया समाधान DDL और DML को अलग रखना है। . दस्तावेज़ीकरण कहते हैं:

<ब्लॉकक्वॉट>

आपको अपने [DML] लेन-देनों को ऐसे [DDL] कथनों को शामिल न करने के लिए डिज़ाइन करना चाहिए। यदि आप किसी लेन-देन की शुरुआत में एक बयान जारी करते हैं जिसे रोलबैक नहीं किया जा सकता है, और फिर बाद में कोई अन्य कथन विफल हो जाता है, तो ऐसे मामलों में रोलबैक स्टेटमेंट जारी करके लेनदेन के पूर्ण प्रभाव को वापस नहीं लाया जा सकता है।




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. PhpMyAdmin के माध्यम से समग्र विदेशी कुंजी बाधा?

  2. Amazon EC2 उदाहरण पर phpMyAdmin स्थापित करना

  3. क्वेरी phpmyadmin में काम करती है लेकिन PHP स्क्रिप्ट में नहीं

  4. Yii2 अल्पविराम से अलग उत्पाद आईडी प्राप्त करें

  5. टाइमस्टैम्प में MySQL त्रुटि