多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

sql教程

SQL 教程

SQL 高級教程

SQL 函數

  • SQL 主機
  • SQL 總結
  • 實例/測驗

    拓展閱讀

    SQL 事務

    閱讀 (2318)

    SQL 事務

    事務是在數據庫上按照一定的邏輯順序執行的任務序列,既可以由用戶手動執行,也可以由某種數據庫程序自動執行。

    事務實際上就是對數據庫的一個或者多個更改。當你在某張表上創建更新或者刪除記錄的時,你就已經在使用事務了。控制事務以保證數據完整性,并對數據庫錯誤做出處理,對數據庫來說非常重要。

    實踐中,通常會將很多 SQL 查詢組合在一起,并將其作為某個事務一部分來執行。

    事務的屬性:

    事務具有以下四個標準屬性,通常用縮略詞 ACID 來表示:

    • 原子性:保證任務中的所有操作都執行完畢;否則,事務會在出現錯誤時終止,并回滾之前所有操作到原始狀態。
    • 一致性:如果事務成功執行,則數據庫的狀態得到了進行了正確的轉變。
    • 隔離性:保證不同的事務相互獨立、透明地執行。
    • 持久性:即使出現系統故障,之前成功執行的事務的結果也會持久存在。

    事務控制:

    有四個命令用于控制事務:

    • COMMIT:提交更改;
    • ROLLBACK:回滾更改;
    • SAVEPOINT:在事務內部創建一系列可以 ROLLBACK 的還原點;
    • SET TRANSACTION:命名事務;

    COMMIT 命令:

    COMMIT 命令用于保存事務對數據庫所做的更改。

    COMMIT 命令會將自上次 COMMIT 命令或者 ROLLBACK 命令執行以來所有的事務都保存到數據庫中。

    COMMIT 命令的語法如下所示:

    COMMIT;

    示例:

    考慮 CUSTOMERS 表,表中的記錄如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    下面的示例將會刪除表中 age=25 的記錄,然后將更改提交(COMMIT)到數據庫中。

    SQL> DELETE FROM CUSTOMERS
         WHERE AGE = 25;
    SQL> COMMIT;

    上述語句將會從表中刪除兩行記錄,再執行 SELECT 語句將會得到如下結果:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    ROLLBACK 命令:

    ROLLBACK 命令用于撤銷尚未保存到數據庫中的事務。

    ROLLBACK 命令只能撤銷自上次 COMMIT 命令或者 ROLLBACK 命令執行以來的事務。

    ROLLBACK 命令的語法如下所示:

    ROLLBACK;

    示例:

    考慮 CUSTOMERS 表,表中的記錄如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    下面的示例將會從表中刪除所有 age=25 的記錄,然后回滾(ROLLBACK)對數據庫所做的更改。

    SQL> DELETE FROM CUSTOMERS
         WHERE AGE = 25;
    SQL> ROLLBACK;

    結果是刪除操作并不會對數據庫產生影響。現在,執行 SELECT 語句將會得到如下結果:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    SAVEPOINT 命令:

    SAVEPOINT 是事務中的一個狀態點,使得我們可以將事務回滾至特定的點,而不是將整個事務都撤銷。

    SAVEPOINT 命令的記錄如下所示:

    SAVEPOINT SAVEPOINT_NAME;

    該命令只能在事務語句之間創建保存點(SAVEPOINT)。ROLLBACK 命令可以用于撤銷一系列的事務。

    回滾至某一保存點的語法如下所示:

    ROLLBACK TO SAVEPOINT_NAME;

    下面的示例中,你計劃從 CUSTOMERS 表中刪除三條不同的記錄,并在每次刪除之前創建一個保存點(SAVEPOINT),從而使得你可以在任何任何時候回滾到任意的保存點,以恢復數據至其原始狀態。

    示例:

    考慮 CUSTOMERS 表,表中的記錄如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    操作序列如下所示:

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

    現在,三次刪除操作已經生效了,如果此時你改變主意決定回滾至名字為 SP2 的保存點,由于 SP2 于第一次刪除操作之后創建,所以后兩次刪除操作將會被撤銷。

    SQL> ROLLBACK TO SP2;
    Rollback complete.

    注意,由于你將數據庫回滾至 SP2,所以只有第一次刪除真正起效了:

    SQL> SELECT * FROM CUSTOMERS;
    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+
    6 rows selected.

    RELEASE SAVEPOINT 命令:

    RELEASE SAVEPOINT 命令用于刪除先前創建的保存點。

    RELEASE SAVEPOINT 的語法如下所示:

    RELEASE SAVEPOINT SAVEPOINT_NAME;

    保存點一旦被釋放,你就不能夠再用 ROLLBACK 命令來撤銷該保存點之后的事務了。

    SET TRANSACTION 命令:

    SET TRANSACTION 命令可以用來初始化數據庫事務,指定隨后的事務的各種特征。

    例如,你可以將某個事務指定為只讀或者讀寫。

    SET TRANSACTION 命令的語法如下所示:

    SET TRANSACTION [ READ WRITE | READ ONLY ];
    關閉
    程序員人生
    主站蜘蛛池模板: 蜜中蜜3动漫无修在线播放 免费 黄 色 人成 视频 | 日本免费三区 | 亚洲欧洲一区二区三区 | 精品理论片一区二区三区 | 乱码精品一区二区三区 | 成人国产欧美精品一区二区 | 国产成人精选免费视频 | japanese中文字幕 | 久久精品区 | 亚洲国产成人久久综合区 | 久久国产精品一区二区 | 久久亚洲伊人成综合人影院 | 精品一区二区三区免费站 | аⅴ天堂 在线8 | 久久精品国产99久久无毒不卡 | 性欧美videofree高清hdbbw | 亚洲精品色一区二区三区 | 性欧美wideos| 欧美13一14周岁a在线播放 | 国产精品国产亚洲精品不卡 | 欧美一区二区三区视频在线观看 | 91精品国产亚一区二区三区 | 欧美精品1区2区 | 午夜香蕉网 | 欧美一区二区精品 | 精品国产午夜肉伦伦影院 | 在线观看亚洲精品国产 | 欧美福利网址 | 亚洲成在人线久久综合 | 大陆三级午夜理伦三级三 | 日韩精品无码一区二区三区 | 亚洲色图1| 成人无遮挡免费网站视频在线观看 | 亚洲天堂中文网 | 手机在线看片国产 | 欧美日韩亚洲第一页 | 欧美com| 欧美激情亚洲一区中文字幕 | 成人区精品一区二区不卡亚洲 | 国产毛片精品 | 亚洲看逼 |