Thứ Tư, 26 tháng 10, 2022

PL/SQL - Transactions (Giao dịch)

Trong chương này, chúng ta sẽ thảo luận về các giao dịch trong PL/SQL. Một giao dịch cơ sở dữ liệu là một đơn vị công việc nguyên tử có thể bao gồm một hoặc nhiều câu lệnh SQL liên quan. Nó được gọi là nguyên tử vì các sửa đổi cơ sở dữ liệu do các câu lệnh SQL tạo thành một giao dịch mang lại có thể được cam kết chung, tức là được thực hiện vĩnh viễn với cơ sở dữ liệu hoặc được khôi phục (hoàn tác) từ cơ sở dữ liệu.

Một câu lệnh SQL được thực thi thành công và một giao dịch đã cam kết không giống nhau. Ngay cả khi một câu lệnh SQL được thực thi thành công, trừ khi giao dịch chứa câu lệnh được cam kết, nó có thể được khôi phục và tất cả các thay đổi được thực hiện bởi (các) câu lệnh có thể được hoàn tác.

Bắt đầu và Kết thúc Giao dịch

Một giao dịch có bắt đầu và kết thúc . Giao dịch bắt đầu khi một trong các sự kiện sau đây diễn ra:

  • Câu lệnh SQL đầu tiên được thực hiện sau khi kết nối với cơ sở dữ liệu.

  • Tại mỗi câu lệnh SQL mới được phát hành sau khi hoàn thành một giao dịch.

Giao dịch kết thúc khi một trong các sự kiện sau đây diễn ra:

  • Tuyên bố COMMIT hoặc ROLLBACK được đưa ra.

  • Một câu lệnh DDL , chẳng hạn như câu lệnh CREATE TABLE , được phát hành; bởi vì trong trường hợp đó, một COMMIT được tự động thực hiện.

  • Một tuyên bố DCL , chẳng hạn như tuyên bố GRANT , được phát hành; bởi vì trong trường hợp đó, một COMMIT được tự động thực hiện.

  • Người dùng ngắt kết nối với cơ sở dữ liệu.

  • Người dùng thoát khỏi SQL * PLUS bằng cách ra lệnh EXIT , COMMIT sẽ tự động được thực hiện.

  • SQL * Plus kết thúc bất thường, một ROLLBACK được tự động thực hiện.

  • Một câu lệnh DML không thành công; trong trường hợp đó, một ROLLBACK được tự động thực hiện để hoàn tác câu lệnh DML đó.

Xác nhận (commit) một giao dịch

Một giao dịch được thực hiện vĩnh viễn bằng cách đưa ra lệnh SQL COMMIT. Cú pháp chung cho lệnh COMMIT là:

COMMIT;


Ví dụ,

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (6, 'Komal', 22, 'MP', 4500.00 ); 


COMMIT;

Rollback giao dịch

Các thay đổi được thực hiện đối với cơ sở dữ liệu mà không có COMMIT có thể được hoàn tác bằng lệnh ROLLBACK.

Cú pháp chung cho lệnh ROLLBACK là:

ROLLBACK [TO SAVEPOINT < savepoint_name>]; 


Khi một giao dịch bị hủy bỏ do một số tình huống chưa từng có, chẳng hạn như lỗi hệ thống, toàn bộ giao dịch kể từ khi cam kết sẽ tự động được khôi phục. Nếu bạn không sử dụng savepoint , thì chỉ cần sử dụng câu lệnh sau để khôi phục tất cả các thay đổi:

ROLLBACK;


Savepoints

Savepoints là loại điểm đánh dấu giúp chia một giao dịch dài thành các đơn vị nhỏ hơn bằng cách thiết lập một số điểm kiểm tra. Bằng cách thiết lập các điểm lưu trong một giao dịch dài, bạn có thể quay trở lại điểm kiểm tra nếu cần. Điều này được thực hiện bằng cách sử dụng lệnh SAVEPOINT .

Cú pháp chung cho lệnh SAVEPOINT là:

SAVEPOINT < savepoint_name >;


Ví dụ

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (7, 'Rajnish', 27, 'HP', 9500.00 ); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 

VALUES (8, 'Riddhi', 21, 'WB', 4500.00 ); 

SAVEPOINT sav1;

  

UPDATE CUSTOMERS 

SET SALARY = SALARY + 1000; 

ROLLBACK TO sav1;

  

UPDATE CUSTOMERS 

SET SALARY = SALARY + 1000 

WHERE ID = 7; 

UPDATE CUSTOMERS 

SET SALARY = SALARY + 1000 

WHERE ID = 8; 


COMMIT;

ROLLBACK TO sav1 - Câu lệnh này quay trở lại tất cả các thay đổi cho đến thời điểm mà bạn đã đánh dấu savepoint sav1.

Sau đó, các thay đổi mới mà bạn thực hiện sẽ bắt đầu.

Kiểm soát giao dịch tự động

Để thực hiện COMMIT tự động bất cứ khi nào lệnh INSERT, UPDATE hoặc DELETE được thực thi, bạn có thể đặt biến môi trường AUTOCOMMIT là:

SET AUTOCOMMIT ON; 


Bạn có thể tắt chế độ cam kết tự động bằng lệnh sau:

SET AUTOCOMMIT OFF;


=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle pl/sql, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master