begin tran
update Emp set Age=Age+1 where Code=1 if(select Age from Emp where Code=1)>35
begin
print '事务回滚'
rollback tran
end
else
begin
print '事务成功执行'
commit tran
end
执行好后,我关闭sqlserver2005时,就出现
有未提交的事务,是否要在关闭窗口之前提交这些事务。
可是在SqlServer2000 中不会出现啊,为什么??事务中的SQL语句不需要declare和exec吗?
if(select Age from Emp where Code='1')>35
select Age from Emp where Code='1' 这条语句在这里会执行吗?不需要exec ? where Code='1' 加单引号和不加有什么区别?
解决方案 »
- 动态参数的传入
- BCP问题,怎么在复制的时候指定一列的值?
- 不能连接数据库 怪异!!!!
- 2条参数不同的存储过程在对一条记录update,我如何保证该条记录只被首先执行的存储过程update记录呢?
- sqlite3,表字段有限制?
- 写SQL select出非交叉的日期 (非常头疼)
- 求SQL语句
- 请问.如何能实现数据表连同它的触发器和存储过程等一起复制!
- 请教高手~~表内复杂查询
- 用VB怎样判断SQL2000SERVE是否安装?
- execute sp_executesql N'select @aa=jobs_desc from jobs where job_id=1',N'@aa nvarchar(40)'
- 遇到问题了,一句SQL不会写,望高手指点。
update Emp set Age=Age+1 where Code=1 if exists (select 1 from Emp where Code=1 and Age > 35)
begin
print '事务回滚'
rollback tran
end
else
begin
print '事务成功执行'
commit tran
end
Code='1' 加单引号和不加有什么区别?
加,为字符串型数据,
不加,为数值型型数据,
假如code='1'查出的不是1笔记录(查不到,或者多余1笔),那就报错了
也就下面的rollback和commit都执行不到。。语法上,你的语句没有问题。code='1' 要看你的code是什么类型,数值型?or 字符型?
数值就不加
update Emp set Age=Age+1 where Code=1 if(select Age from Emp where Code=1)>35
begin
print '事务回滚'
rollback tran
end
else
begin
print '事务成功执行'
end
commit tran
字符串就加''
数值类型的就不加
update Emp set Age=Age+1 where Code=1 if(select Age from Emp where Code=1)>35
begin
print '事务回滚'
rollback tran
end
else
begin
print '事务成功执行'
end
commit tran
update Emp set Age=Age+1 where Code=1 if(select Age from Emp where Code=1)>35
begin
print '事务回滚'
rollback tran
end
else
begin
print '事务成功执行'
end
commit tran
'1':字符串类型
1 :数值类型