A. 怎樣使用sql2005的回滾
--開始事物處理
BEGIN TRANSACTION
---執行SQL(可以寫多句嗎)
exec('SELECT * FROM TableA; SELECT * FROM TableB;');
---如果出錯
IF @@ERROR != 0
BEGIN
---滾回所有操作 TRANSACTION
ROLLBACK TRANSACTION
RETURN
END
--否則提交所有操作TRANSACTION
ELSE
COMMIT TRANSACTION
B. sql 事務自動回滾
你要用SET XACT_ABORT (Transact-SQL)
指定當 Transact-SQL 語句出現運行時錯誤時,SQL Server 是否自動回滾到當前事務。
當 SET XACT_ABORT 為 ON 時,如果執行 Transact-SQL 語句產生運行時錯誤,則整個事務將終止並回滾。
當 SET XACT_ABORT 為 OFF 時,有時只回滾產生錯誤的 Transact-SQL 語句,而事務將繼續進行處理。如果錯誤很嚴重,那麼即使 SET XACT_ABORT 為 OFF,也可能回滾整個事務。OFF 是默認設置。
編譯錯誤(如語法錯誤)不受 SET XACT_ABORT 的影響。
C. sql語句中的回滾事務
sql語句中的回滾事務語法如下:
1、setXACT_ABORToff時,回滾產生錯誤的Transact-SQL語句,而事務將繼續進行處理,(註:錯絕埋誤嚴重或者語法錯誤時可能回滾整個事務)純歷
2、setXACT_ABORTON時,如果Transact-SQL語句產生運行並褲螞時錯誤,整個事務將終止並回滾。
D. sql存儲過程中事務出現錯誤回滾,那麼在回滾之後的語句會執行嗎
會的。
一般回滾操作都是寫在異常處理,或是sql的最後。如果你的sql中出現錯誤 ,代碼會立即跳轉到錯誤處理代碼上執行,比如回滾,但緊接在錯誤行之後的代碼不會執行的。
如
1.update .....;
2.select ......;
3.when Exception
....rollback;
4.insert into .....
以上偽代碼,如果行1出錯,行2將不會執行,直接跳轉到行3,然後行4 也會執行。
E. SQL語句如何rollback
rollback是針對事務的,你如果沒有在執行語句之前開啟事務,那麼無法rollback,建議你還是想別的辦法吧,事務語句如下(sqlserver的給你借鑒):
--開啟事務
begin tran
--執行操作
update Accounts_UsersExp set TelPhone=123456 where userid=14
--執行錯誤事務回滾
rollback
--如果正確進行事務提交
commit
可以勾選一句執行一句,但是commit了就不能rollback
F. 關於多個SQL文執行時,回滾的問題
/// <summary>
/// 執虛渣穗行多條SQL語句,實現資料庫事務。
/// </summary>差卜
/// <param name="梁隱SQLStringList">多條SQL語句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection=conn;
SqlTransaction tx=conn.BeginTransaction();
cmd.Transaction=tx;
try
{
for(int n=0;n<SQLStringList.Count;n++)
{
string strsql=SQLStringList[n].ToString();
if (strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch(System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}
G. sql 回滾語句
事務回滾Transaction Rollback 是指當事務中的某一語句執行失敗時將對資料庫
的操作恢復到事務執行前或某個指定位置.
如:
begin transaction my_transaction_delete
use pangu
go
delete from department
where dept_id = 』1012』
update employee
set dept_id = 』1001』
where dept_id = 』1012』
if @@error!=0 or @@rowcount=0 then
begin
rollback tran after_delete /* 回滾到保存點after_deletereturn,如果使用rollback my_transaction_delete 則會回滾到事務開始前 */
commit tran
print 『更新員工信息表時產生錯誤』
return
end
commit transaction my_transaction_delete
go
H. sql 語句回滾的問題幫幫忙。
用事務處理(比如事務名稱是UpdatePrintBill,可以隨便起名稱)
BEGIN
TRANSACTION
UpdatePrintBill
--中間寫你的代碼
insert
into
T_BHS_OrderList(OrderList_OrderNum,OrderList_ProId,
OrderList_ProName,OrderList_Pubish_Id,OrderList_SortId,
OrderList_UserID,OrderList_Price,OrderList_Count,
OrderList_CommonPrice,OrderList_Down,OrderList_Time)
select
@OrderNumber,Cart_ProId,Cart_ProName,Cart_Pubish_Id,Cart_Status,Cart_UserId,
Cart_Price,Cart_Count,Cart_CommonPrice,Cart_Down,getdate()
from
dbo.T_BHS_Cart
where
Cart_UserId=@userID
--結束你的代碼
IF
@@ERROR
>
0
BEGIN
rollback
TRANSACTION
UpdatePrintBill
return
-1
END
else
begin
COMMIT
TRANSACTION
UpdatePrintBill
return
1
end
I. 高斯誤執行sql怎麼回滾
回滾指的是在一個SQL事務中,如果遇到執行報錯等情況,可以回滾到事務開始的地方。『
但是如果語句已經執行完畢,那麼是沒有類似於word中撤銷的功能,只能找到語句執行之笑如前資料庫的備份,通過關聯表漏碼查詢去找到修改前返升哪的記錄
J. mysql 多條語句,怎麼判斷其中一條執行錯誤,就執行回滾
寫一個存儲過程,在存儲過程里寫一個事物,再租旅把你要的mysql 多條語句寫在事物裡面就行了,要用的時候調用一下存儲過程.大致格式是這樣的:
drop procere if exists accessCount;
delimiter $
create procere accessCount()
BEGIN
DECLARE t_error INTEGER DEFAULT 0;/猛顫*設枝型敗置錯誤增量*/
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;/*開啟事物*/
xxxx(你的語句)
IF t_error = 1 THEN /*執行失敗回滾*/
ROLLBACK;
ELSE
COMMIT;
END IF;
end $
delimiter ;