Oracle更新資料后,查詢一次,資料就自動還原了。我看視頻里面,老師更新完資料后就沒有commit,他查詢后資料就還在。如果commit了,就是不能進行rollback to savepoint操作。我想進行savepoint的操作,完全沒辦法實作。
uj5u.com熱心網友回復:
把你的實驗程序,詳細說一下。包含幾個會話,各個會話陳述句的執行順序,都說一下uj5u.com熱心網友回復:
delete from my_employees;
select * from my_employees;
顯示:資料全沒了
select * from my_employees;
顯示:資料全是delete之前的
uj5u.com熱心網友回復:
再比如:
update my_employees
set salary =1000
where id =1;
select * from my_employees;
顯示:id為1的salalry 1000
select * from my_employees;
顯示: id為1的salary 850(改之前的資料)
uj5u.com熱心網友回復:
1.delete from my_employees;
select * from my_employees;
顯示:資料全沒了
2.
select * from my_employees;
顯示:資料全是delete之前的
這是兩個會話嗎? 或者說,你是打開了兩個視窗嗎?
uj5u.com熱心網友回復:
1.
delete from my_employees;
select * from my_employees;
顯示:資料全沒了
2.
select * from my_employees;
顯示:資料全是delete之前的
這是兩個會話嗎? 或者說,你是打開了兩個視窗嗎?
uj5u.com熱心網友回復:
delete from my_employees;
commit;
select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
uj5u.com熱心網友回復:
delete from my_employees;
commit;
select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
uj5u.com熱心網友回復:
delete from my_employees;
commit;
select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
uj5u.com熱心網友回復:
你的實驗程序,哪里有 rollback 操作 ?uj5u.com熱心網友回復:
你的實驗程序,哪里有 rollback 操作 ?

uj5u.com熱心網友回復:
第二次select 是在同一個視窗(會話)運行的,還是另一個視窗(會話)中運行的?uj5u.com熱心網友回復:
你的實驗程序,哪里有 rollback 操作 ?
uj5u.com熱心網友回復:
第二次select 是在同一個視窗(會話)運行的,還是另一個視窗(會話)中運行的?
uj5u.com熱心網友回復:
delete from my_employees;select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
看看結果
uj5u.com熱心網友回復:
delete from my_employees;
select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
看看結果
uj5u.com熱心網友回復:
delete from my_employees;
select t.*, rowid from my_employees t;
select t.*, rowid from my_employees t;
看看結果
uj5u.com熱心網友回復:
表上有沒有觸發器?uj5u.com熱心網友回復:
表上有沒有觸發器?

好像沒并沒有
uj5u.com熱心網友回復:
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
uj5u.com熱心網友回復:
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
uj5u.com熱心網友回復:
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
如果是這種情況,應該在delete前就查rowid吧?而且如果有主鍵的話,這種情況也不可能出現,真是見了鬼了。
uj5u.com熱心網友回復:
樓主查下dba/all/user_dependencies視圖,看看name或者referenced_name為'EMP0'時,有沒有記錄,看看有沒有可疑的依賴物件。uj5u.com熱心網友回復:
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。uj5u.com熱心網友回復:
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。
uj5u.com熱心網友回復:
剛試了,sql plus沒這個問題,PLsql的問題。
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。
那你再用plsql dev的sql視窗而不是命令視窗試下?
uj5u.com熱心網友回復:
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。
uj5u.com熱心網友回復:
可是,我看別人教程里面的plsql就沒這個問題。難道是版本的問題,還是我設定的問題啊?有解決辦法嗎?
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。
有可能是版本問題,有可能是設定問題,如果sql視窗沒問題,那么也可能是特定版本的命令視窗BUG,第三方工具不靠譜啊
uj5u.com熱心網友回復:
可是,我看別人教程里面的plsql就沒這個問題。難道是版本的問題,還是我設定的問題啊?有解決辦法嗎?
另外,plsql dev不熟,不知道有沒有設定執行sql前先回滾或者提交的功能?換個其他客戶端試下?比如sqlplus,排除工具問題。
有可能是版本問題,有可能是設定問題,如果sql視窗沒問題,那么也可能是特定版本的命令視窗BUG,第三方工具不靠譜啊
uj5u.com熱心網友回復:
那么查下設定里面是不是有針對命令視窗的自動提交回滾之類的設定?如果沒有,那么就是BUG了吧。。。如果不是非常喜歡plsql dev,可以換其他客戶端,比如oracle自家的sql developer,或者quest的toad。
uj5u.com熱心網友回復:
貌似 是的呀呀呀呀呀呀呀
uj5u.com熱心網友回復:
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
delete完成以后commit一下,否則再次查詢還是有資料的
uj5u.com熱心網友回復:
commit沒提交之前,資料是不生效的uj5u.com熱心網友回復:
感謝樓主分享,非常使用,必須贊一個uj5u.com熱心網友回復:
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
delete完成以后commit一下,否則再次查詢還是有資料的
uj5u.com熱心網友回復:
是只有這些代碼嗎?uj5u.com熱心網友回復:
commit了,就不能rollback了
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
delete完成以后commit一下,否則再次查詢還是有資料的
oracle,刪除數據,未commit,可以回滾數據,重繪一次自動回滾,必須點擊commit,才能真正刪除數據,commit了就不能回滾了,這沒毛病啊
uj5u.com熱心網友回復:
commit了,就不能rollback了
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
delete完成以后commit一下,否則再次查詢還是有資料的
oracle,刪除數據,未commit,可以回滾數據,重繪一次自動回滾,必須點擊commit,才能真正刪除數據,commit了就不能回滾了,這沒毛病啊
uj5u.com熱心網友回復:
如果你多次delete資料后發現有問題,你想回到3次delete前的狀態,如果你每次commit了就不能實作這個操作了。我在別人的教程上看的是delete后,不管怎么select,資料就不會自動回滾,多次洗掉后確定沒問題才commit,一旦發現問題就rollback。
commit了,就不能rollback了
樓主錄制一個 gif 檔案發上來,這個情況是不應該出現的。
除非其他會話,給你重寫了資料,也就是前面我讓你查詢 rowid 的原因。
delete完成以后commit一下,否則再次查詢還是有資料的
oracle,刪除數據,未commit,可以回滾數據,重繪一次自動回滾,必須點擊commit,才能真正刪除數據,commit了就不能回滾了,這沒毛病啊
我是每刪除一次就提交一次,并不是刪除多次再提交,每刪除一次,刪除失敗馬上回滾
uj5u.com熱心網友回復:
建議使用toaduj5u.com熱心網友回復:
使用truncate試試?uj5u.com熱心網友回復:
plsql你在sql命令視窗查詢就沒有這個問題,我看你用的是command命令視窗,可能是plsql默認設定的問題。uj5u.com熱心網友回復:
使用truncate試試?
plsql本身 的問題。我重新找了一個plsql就ok了
使用truncate試試?
uj5u.com熱心網友回復:
這個可能就是軟體設定問題了,陳述句命令都沒啥問題,看看是不是設定了DML命令未提交的自動回滾轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11541.html
標籤:基礎和管理
上一篇:SQL查詢問題
