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 ;