最近在專案中碰到個問題,更新過期資料時事務沒有回滾。前前後後仔細檢查了一遍事務配置,始終沒有找出問題所在。最後經過單步除錯,總算找到了問題根源:使用truncate刪除資料,導致事務被提交。
1、在oracle中刪除資料後還能回滾是因為資料被放在了undo表空間。
2、dml = data manipulation language,資料操縱語言,使用undo表空間;
ddl = data definition language,資料定義語言,不使用undo表空間。
delete是dml語句,truncate是ddl語句,ddl語句隱式提交,即使當前事務出錯,也無法回滾。
mysql中delete與truncate的區別
語法 delete from 表名 where conditions conditions為篩選條件,如果沒有,預設刪除全部資料 用於清空表資料,但表結構,索引,約束不變 語法 truncate table table name 結論 delete刪除全部資料後,自增值會在當前值的基礎上繼續遞增,會...
mysql中delete和truncate區別
delete和truncate區別如下 一 靈活性 delete可以條件刪除資料,而truncate只能刪除表的所有資料 delete from table test where truncate table table test 二 效率 delete效率低於truncate,delete是一行一...
oracle中的角色
oracle 中的角色 一 何為角色?我在前面的篇幅中說明許可權和使用者。慢慢的在使用中你會發現乙個問題 如果有一組人,他們的所需的許可權是一樣的,當對他們的許可權進行管理的時候會很不方便。因為你要對這組中的每個使用者的許可權都進行管理。有乙個很好的解決辦法就 是 角色。角色是一組許可權的集合,將角...