别人问我一个问题,说当要往主表和子表插入一条记录的时候主表里面的更新成功了,子表里面失败了,这时候怎么解决,我不会大家帮我看看!
ps:
我如果写了begin
update t1 set....
update t2 set....
end
这样,会发生只更新了t1,而t2没更新的情况吗?我以为只要插入的数据类型都符合就不会失败了呀!
ps:
我如果写了begin
update t1 set....
update t2 set....
end
这样,会发生只更新了t1,而t2没更新的情况吗?我以为只要插入的数据类型都符合就不会失败了呀!
解决方案 »
- 语句求救!!!!!!!!!!!!!!在线等!!
- 请问:读出满足一个条件的(任意)第m条记录到第n条记录(没有分了^_^)
- 救命呀 管理员默认的数据库脱机了 登陆不上去了 怎么办呀
- 安装SQL2000 SP4补丁的时候出错
- 求一个SQL语句 急!!!!!!!!!
- SQL语句,望大神帮忙
- sqlserver2000查询分析器default约束,BUG?
- 救命呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 谁一个sql server服务器中简繁体公用的解决方案?
- 请问如何设置两个数据库实时同步(SQL SERVER 7。0)
- 修改字段值,想要在字段里添加字符字怎么办?
- [求助]两个表之间的联查
setautocommit()
update
update
setcommit()
BEGIN
COMMIT TRANSACTION
END
ELSE
BEGIN
ROLLBACK TRANSACTION
END
set iErrCode = -1 -- 用于捕获@@error的值
begin tran
update t1 set....
set iErrCode = @@error -- 成功 iErrCode = 0,否则iErrCode != 0 if @@iErrCode = 0
begin
update t2 set....
set iErrCode = @@error
end
.......if @@iErrCode = 0
begin
commit tran
end
esle
begin
rollback tran
end
SET @ERROR = 0BEGIN TRAN
UPDATE t1 SET...
SET @ERROR=@@ERROR
IF @ERROR <> 0
GOTO ERR
UPDATE t2 SET...
SET @ERROR=@@ERROR
IF @ERROR <> 0
GOTO ERR ERR:
IF @ERROR= 0
COMMIT TRANSACTION ;
ELSE
ROLLBACK TRANSACTION
BEGIN TRY
UPDATE t1 SET...
UPDATE t2 SET...
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE()<>0
ROLLBACK TRANSACTION
END CATCH
第二种方式
set @@iErrCode = -1 -- 用于捕获@@error的值
begin tran
insert tb1(dasfdf,fasf) values(1909,2)
set @@iErrCode = @@error -- 成功 iErrCode = 0,否则iErrCode != 0 if @@iErrCode = 0
begin
insert tb1(dasfdf,fasf) values(22,23)
set @@iErrCode = @@error
end
if @@iErrCode = 0
begin
commit tran
end
else
begin
rollback tran
end