Transaction trong SQL

Related Articles

Transaction trong SQL là một đơn vị công việc được thực hiện bởi một Database. Transaction là đơn vị hoặc dãy công việc được thực hiện theo một thứ tự logic và hợp lý, có thể được thao tác bởi người dùng hoặc bởi một Database program.

Một transaction là một sự Viral của một hoặc nhiều biến hóa tới Database. Ví dụ, nếu bạn đang tạo một bản ghi hoặc update một bản ghi hoặc xóa một bản ghi từ một bảng, thì bạn đang thực thi transaction trên bảng đó. Nó là quan trọng để điều khiển và tinh chỉnh những transaction để bảo vệ toàn vẹn tài liệu và để giải quyết và xử lý những Database Error .

Thực tế, bạn sẽ tập hợp nhiều truy vấn SQL vào trong một nhóm và sẽ thực thi toàn bộ truy vấn này cùng với nhau như thể một phần của một transaction .

Property của Transaction trong SQL

Transaction có 4 property chuẩn, thường được tham chiếu bởi tên lược danh là ACID :

  • Atomicity: bảo đảm rằng tất cả hoạt động bên trong đơn vị công việc được hoàn thành một cách thành công; nếu không, transaction bị ngừng ở điểm thất bại, và các hoạt động trước được trao trả về trạng thái trước đó.

  • Consistency: bảo đảm rằng Database thay đổi một cách chính xác trạng thái theo một transaction đã được ký thác thành công.

  • Isolation: cho các transaction khả năng hoạt động một cách độc lập và không liên quan đến nhau.

  • Durability: bảo đảm rằng kết quả hoặc tác động của một transaction, mà đã được ký thác, vẫn còn tồn tại trong trường hợp hệ thống thất bại.

Điều khiển transaction trong SQL

Trong SQL, có những lệnh sau được sử dụng để điều khiển và tinh chỉnh transaction :

  • COMMIT: để lưu các thay đổi.

  • ROLLBACK: để quay trở lại trạng thái trước khi có thay đổi.

  • SAVEPOINT: tạo các điểm (point) bên trong các nhóm transaction để ROLLBACK, tức là để quay trở lại điểm trạng thái đó.

  • SET TRANSACTION: đặt một tên cho một transaction.

Các lệnh tinh chỉnh và điều khiển transaction chỉ được sử dụng với những lệnh INSERT, UPDATE và DELETE. Chúng không hề được sử dụng trong khi tạo và xóa bảng, chính bới những hoạt động giải trí này được ký thác tự động hóa trong Database .

Lệnh COMMIT trong SQL

Lệnh COMMIT là lệnh tinh chỉnh và điều khiển transaction được sử dụng để lưu những biến hóa đã được triệu hồi bởi một transaction tới Database .

Lệnh COMMIT lưu giữ toàn bộ transaction trong Database từ lệnh COMMIT hoặc ROLLBACK sau cuối .

Cú pháp cơ bản của lệnh COMMIT là như sau :

COMMIT;

Quảng cáo

Ví dụ

Bảng SINHVIEN có những bản ghi sau :

+----+---------+-----+-----------+--------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 1 | Hoang | 21 | CNTT | 4000000 |
| 2 | Viet | 19 | DTVT | 3000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 4 | Nhan | 19 | CK | 4500000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+---------+-----+-----------+---------+

Ví dụ sau sẽ xóa các bản ghi từ bảng mà có tuoi = 19 và sau đó COMMIT các thay đổi vào trong Database.

SQL> DELETE FROM SINHVIEN WHERE TUOI = 19;
SQL> COMMIT;

Trong tác dụng thu được, hai hàng của bảng sẽ bị xóa và lệnh SELECT sẽ cho hiệu quả sau :

+----+----------+-----+-----------+----------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 1 | Hoang | 21 | CNTT | 4000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+----------+-----+-----------+----------+

Quảng cáo

Lệnh ROLLBACK trong SQL

Lệnh ROLLBACK là lệnh tinh chỉnh và điều khiển transaction được sử dụng để trao trả transaction về trạng thái trước khi có những đổi khác mà chưa được lưu tới Database .

Lệnh ROLLBACK chỉ hoàn toàn có thể được sử dụng để undo những transaction từ lệnh COMMIT hoặc ROLLBACK ở đầu cuối được thông tin .

Cú pháp cơ bản của lệnh ROLLBACK như sau :

ROLLBACK;

Ví dụ

Bảng SINHVIEN có những bản ghi sau :

+----+---------+-----+-----------+--------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 1 | Hoang | 21 | CNTT | 4000000 |
| 2 | Viet | 19 | DTVT | 3000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 4 | Nhan | 19 | CK | 4500000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+---------+-----+-----------+---------+

Bây giờ sử dụng lệnh ROLLBACK với lệnh xóa tuoi = 19, mà chưa được commit như sau :

SQL> DELETE FROM SINHVIEN WHERE TUOI = 19;
SQL> ROLLBACK;

Trong hiệu quả thu được, hoạt động giải trí Delete này không tác động ảnh hưởng tới bảng và lệnh SELECT sẽ cho hiệu quả :

+----+---------+-----+-----------+--------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 1 | Hoang | 21 | CNTT | 4000000 |
| 2 | Viet | 19 | DTVT | 3000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 4 | Nhan | 19 | CK | 4500000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+---------+-----+-----------+---------+

Lệnh SAVEPOINT trong SQL

Một SAVEPOINT là một điểm ( point ) trong một transaction khi bạn hoàn toàn có thể lùi transaction về một điểm đơn cử mà không cần lùi transaction về trạng thái đầu trước khi có biến hóa đó .

Cú pháp cơ bản của lệnh SAVEPOINT như sau :

SAVEPOINT TEN_CUA_SAVEPOINT;

Lệnh này chỉ ship hàng trong việc tạo một SAVEPOINT trong những lệnh tinh chỉnh và điều khiển transaction. Lệnh ROLLBACK được sử dụng để undo một nhóm những transaction .

Cú pháp để lùi về một SAVEPOINT như sau :

ROLLBACK TO TEN_CUA_SAVEPOINT;

Trong ví dụ sau, bạn muốn xóa 3 bản ghi khác nhau từ bảng SINHVIEN. Bạn muốn tạo một SAVEPOINT trước mỗi lệnh DELETE, để mà bạn hoàn toàn có thể ROLLBACK về bất kể SAVEPOINT nào tại bất kể khi nào để trả tài liệu thích hợp về trạng thái khởi đầu của nó .

Ví dụ

Bảng SINHVIEN có những bản ghi sau :

+----+---------+-----+-----------+--------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 1 | Hoang | 21 | CNTT | 4000000 |
| 2 | Viet | 19 | DTVT | 3000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 4 | Nhan | 19 | CK | 4500000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+---------+-----+-----------+---------+

Dưới đây là một dãy những hoạt động giải trí :

SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM SINHVIEN WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM SINHVIEN WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM SINHVIEN WHERE ID=3;
1 row deleted.

Ở trên, có 3 hoạt động giải trí xóa diễn ra. Sau một lúc, bạn biến hóa tâm lý và quyết định hành động ROLLBACK về SAVEPOINT mà bạn đã xác lập là SP2. Bởi vì SP2 được tạo sau hoạt động giải trí xóa tiên phong, do đó hai hoạt động giải trí xóa sau cuối được undo .

SQL> ROLLBACK TO SP2;
Rollback complete.

Chú ý rằng, chỉ có hoạt động giải trí xóa tiên phong diễn ra khi bạn rollback về SP2 .

SQL> SELECT * FROM SINHVIEN;
+----+---------+-----+-----------+--------+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+----+---------+-----+-----------+---------+
| 2 | Viet | 19 | DTVT | 3000000 |
| 3 | Thanh | 18 | KTDN | 4000000 |
| 4 | Nhan | 19 | CK | 4500000 |
| 5 | Huong | 20 | TCNH | 5000000 |
+----+---------+-----+-----------+---------+
4 rows selected.

Lệnh RELEASE SAVEPOINT trong SQL

Lệnh RELEASE SAVEPOINT được sử dụng để xóa một SAVEPOINT mà bạn đã tạo .

Cú pháp cơ bản của lệnh RELEASE SAVEPOINT trong SQL như sau :

RELEASE SAVEPOINT TEN_CUA_SAVEPOINT;

Một khi một SAVEPOINT đã bị xóa, bạn không thể sử dụng lệnh ROLLBACK để lùi transaction về SAVEPOINT đó nữa.

Lệnh SET TRANSACTION trong SQL

Lệnh SET TRANSACTION hoàn toàn có thể được sử dụng để khởi tạo một Database Transaction. Lệnh này được sử dụng để xác lập đặc trưng cho transaction đó .

Ví dụ, bạn hoàn toàn có thể xác lập một transaction là read only hoặc read write .

Cú pháp cơ bản của lệnh SET TRANSACTION trong SQL như sau :

SET TRANSACTION [ READ WRITE | READ ONLY ];

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories