SQL語句如何rollback

2021-03-09 08:24:12 字數 1334 閱讀 5693

1樓:angry·車車

rollback是針對事務的,你如果沒有在執行語句之前開啟事務,那麼無法rollback,建議你還是想別的辦法吧,事務語句如下(sqlserver的給你借鑑):

--開啟事務

begin tran

--執行操作

update accounts_user***p set telphone=123456 where userid=14

--執行錯誤事務回滾

rollback

--如果正確進行事務提交

***mit

可以勾選一句執行一句,但是***mit了就不能rollback

2樓:猴麼戎

你這個沒有begin ...end 時,第二個rollback transaction的存在會產生兩個報錯

rolling back the transaction two times would cause an error.

rollback transaction 請求沒有對應的 begin transaction。

且第一個rollback transaction 與end之前的語句不會執行

你這個有begin ...end 時,不會報錯,且第一個rollback transaction 與end之前的語句不會執行

這應該是一段完整指令碼的片段,你把完整指令碼仔細看看吧

3樓:千鋒教育

回滾要放在事務裡面進行,才能進行回滾;sql裡面的事務使用關鍵字transaction

1:可以用try catch捕獲

begin try

begin tran

update table set a=1;

***mit tran

end try

begin catch

rollback tran

end catch

2:可以使用error 全域性變數

begin tran

update tablename set ad=1111if @@error<>0 begin rollback end***mit tran

注意:如果一個事務寫了 begin trans ,後面一定要跟上 ***mit tran或 rollback transaction ,否則可能導致被鎖

4樓:匿名使用者

如果你已經***mit了那麼就不能再通過事物回到update之前的狀態了,不過如果你用的是oracle資料庫,可以用它的資料庫閃回機制實現。

5樓:虞嘉妍

在oracle中提交之後,就不能rollback了

sql語句修改欄位長度,sql語句如何修改欄位長度

oracle下這麼執行 alter table member modify phone char 15 sqlserver下這麼執行 alter table member alter column phone char 15 你到底用什麼庫 sql server修改表的欄位長度的語法規則及示例如下 ...

SQL語句問題,SQL語句問題

樓主在資料結構有問題,帳號相同是可以的,但其實兩者在關係並不是單單是帳號在關係,還有工號之間有關係,所以你的結構有點點問題,既然工號之間也是有關係的,那麼也應該提取出來,所以你的b表應該儲存為 三個欄位 賬號 收銀員 營業員 儲存內容 賬號 收銀員id 營業員id 那麼你想要的結果就很清晰了 sel...

如何優化用sql語句insert

插入書寫方式 1 insert into t1 field1,field2 value 001 002 最好的做法明確插入的每一列,列於查錯,而且漏列的機率會降低。2 insert into t1 field1,field2 values 001 002 003 004 能夠批量插入資料最好批量插入...