Əsas səhifə > MySQL > Statements That Cause an Implicit Commit

Statements That Cause an Implicit Commit

MySQL Transaction
Transactions and Locks
Transaction başlatdıqda transaction ərzində daxil edilən bütün komandalar commit\rollback-i gözləməli olur. Və o zamana qədər heç bir dəyişiklik baş vermir. Lakin elə komandalar var ki, transaction daxilində olmasından asılı olmayaraq implicit commit olur.
Bunlardan Bəzilərinə baxacıq.
1.ALTER TABLE

-- cədvəlin yaradılması
mysql> create table commit_test(id int) engine=innodb;

mysql> show create table commit_test\G
CREATE TABLE `commit_test` (
  `id` int(11)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

(1)Transaction başladaq:

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> alter table commit_test modify id int not null;
Query OK, 0 rows affected (0.43 sec)
Records: 0  Duplicates: 0  Warnings: 0

Məntiqlə düşünməli idik ki, commit olunmayınca table alter olunmalı deyildi. Amma digər bir connection-dan baxdıqda artıq alter-in implicit commit olduğunun şahidi oluruq:
(2)

CREATE TABLE `commit_test` (
  `id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

2. DROP DATABASE

Ilk öncə schema-nı yaradaq:

mysql> create database for_drop;
Query OK, 1 row affected (0.11 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| backup_test        |
| cms                |
| data               |
| db1                |
| db_first           |
| exam_db            |
| for_drop    
.
.
18 rows in set (0.00 sec)

Transaction daxilində drop database-i işlədək:

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> drop database for_drop;
Query OK, 0 rows affected (0.29 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

rollback etməyimizə baxmayaraq…artıq drop olunub…
Digər connection-dan baxdıqda:

mysql> use for_drop;
ERROR 1049 (42000): Unknown database 'for_drop'

3. TRUNCATE TABLE

mysql> insert into commit_test() values(1),(2),(3),(4),(5),(6),(7),(8);
Query OK, 8 rows affected (0.16 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> select * from commit_test;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
+----+
8 rows in set (0.00 sec)

Transaction daxilində truncate edək:

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> truncate table commit_test;
Query OK, 0 rows affected (0.25 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

rollback-ə baxmayaraq truncate işlədi. digər connection-dan baxsaq:

mysql> select * from commit_test;
Empty set (0.00 sec)

4. RENAME TABLE

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> rename table commit_test to commit_test85;
Query OK, 0 rows affected (0.84 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

Digər connection-dan:

mysql> select * from commit_test;
ERROR 1146 (42S02): Table 'tr_blog.commit_test' doesn't exist
mysql> select * from commit_test85;
Empty set (0.00 sec)

Belə komandalar Sayca çoxdular hamısını yazmaq lazım deyil məncə.
İmplicit commit olan statements full list:
Statements That Cause an Implicit Commit

Təşəkkürlər🙂

  1. Hələlik heç bir şərh yoxdur
  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: