现在又3个表 A,B,C
表A一个字段a是主键 表B有1个字段b是主键表C有3个字段 c1主键,c2,c3
我想的过程是这样的
update A
if @@error <> ''
如果有错误就直接去insertupdate B
if @@error <> ''insert into C 如果update A的时候 出现错误 就不执行update B 直接去insert C 然后退出过程
哪位大侠能帮忙解决下
表A一个字段a是主键 表B有1个字段b是主键表C有3个字段 c1主键,c2,c3
我想的过程是这样的
update A
if @@error <> ''
如果有错误就直接去insertupdate B
if @@error <> ''insert into C 如果update A的时候 出现错误 就不执行update B 直接去insert C 然后退出过程
哪位大侠能帮忙解决下
begin
update A
if @@error<0
rollback
else
update B
end
begin
insert into c
end
commit tran
还能执行c ?
应该goto吧
update 有错误 判断如果有错 不管下面是什么语句 都不执行直接跳到insert执行insert语句执行完毕退出
declare @i int
set @i=0
update ta set id=10/0
set @i=abs(@@error)
if @i<>0
insert tc select 10
else
update tb set id=10
update B
update C
update D
我怎么才能在执行完update后跳到update D去执行 完毕后退出
update B
update C
update D
我怎么才能在执行完update后跳到update D去执行 完毕后退出
update A
update B
update C
update D
我怎么才能在执行完update A后跳到update D去执行 完毕后退出
DROP TABLE [a]
GO
IF NOT OBJECT_ID('[b]') IS NULL
DROP TABLE [b]
GO
IF NOT OBJECT_ID('[c]') IS NULL
DROP TABLE [c]
GO
IF NOT OBJECT_ID('[d]') IS NULL
DROP TABLE [d]
GO
CREATE TABLE A(A INT)
CREATE TABLE B(A INT)
CREATE TABLE C(A INT)
CREATE TABLE D(A INT)INSERT A SELECT 1
INSERT B SELECT 1
INSERT C SELECT 1
INSERT D SELECT 1UPDATE A SET A=A/0
IF @@ERROR<>0
UPDATE D SET A=2
ELSE
INSERT C SELECT 2SELECT * FROM D
/*
A
-----------
2(1 行受影响)
*/参考
update A
if 如果成立执行goto
goto Aupdate B
update C
update D
上面的goto A直接跳到这里
A:
写需要的语句
return 退出过程
update A..
update B..
insert into C ..
end trybegin catch
insert into C ..
end catch
前提是b和C都不会报错