1. 程式人生 > >Oracle、Mysql之事務及四大特性

Oracle、Mysql之事務及四大特性

一、什麼是事務? 概念:事務是指單個邏輯工作單元執行的一系列操作,用於保證資料的安全有效.要麼完全地執行,要麼完全地不執行; SQL語句就是自身的一個事務。 SQL語句有:DML/DDL/DCL/TCL 生活場景:我轉賬給別人,要麼我轉賬成功,別人收款成功。要麼我轉賬失敗,別人收款失敗。 二、事務的四大特性?ACID 1、原子性(Atomic): 概念:事務中所有資料的修改,要麼全部執行,要麼全部不執行; 理解:不可再分的。 2、一致性(Consistence): 概念:事務完成時,要使所有資料都保持一致的狀態。 理解:不管誰操作了資料庫,資料在資料庫中的狀態是一致的,大家看到的結果是一致的。 3、隔離性(Isolation): 概念:事務應該在另一個事務對資料的修改前或修改後進行訪問。 理解:A操作的時候,不影響B,A在commit之前,可以看到修改後的結果,B看不到。 比如我要向資料庫中新增一條資料,那麼你想要查詢資料中的資料,就應該在我新增這條記錄之前或者新增之後,再查詢資料庫的資料。 要是你在我新增記錄進行時去查詢資料,在我沒有commit之前,我是可以看到資料庫中已經有我新增的記錄了,但是你是看不到的。這個就體現了事務的隔離性。 也就是說只有在我commit之後,新增的記錄才會被持久化到資料庫當中,在commit之前,是可以通 過rollback進行撤銷新增的。 4、永續性(Durability):事務一旦提交,也就是commit之後,對資料庫的修改是持久有效的,即使發生系統故障,也不應該丟失。 三、事務的分類? 1、隱式事務 理解:資料庫(SQL/ORACLE)自動幫我們處理事務(自動提交事務)。 (1)SET AUTO COMMIT ON (只針對一個連線); (2)以下情況自動提交事務: 1)正常執行完成的DDL語句:create、alter、drop、delete... 2)正常執行完成的DCL語句:grant、invoke... 3)正常退出的客戶端工具:SQL Plus、SQL Developer、PL/SQL Developer 2、顯式事務 理解:自己來處理事務(手動提交事務) 關鍵字: BEGIN TRANSACTION 表示一個事務要開始了。 COMMIT TRANSACTION 表示從begin(事務開始)後的所有修改都被持久化到資料庫中。 ROLLBACK TRANSACTION 表示從begin(事務開始)後的所有修改都會被還原。 SAVEPOINT TRANSACTION SAVE_NAME 表示在事務中設定儲存點SAVE_NAME(儲存點名稱) ROLLBACK TRANSACTION SAVE_NAME 表示可以rollback回滾到SAVE_NAME(儲存點名稱) PS: (1)顯式事務是需要我們顯式(手動)呼叫TCL(事務控制語言)語句; (2)當我們commit之後,對資料的修改才真正的持久化到資料庫中,在commit之前,可以通過rollback撤銷修改的。