背景描述:
SQL SERVER2008访问SQL SERVER2000(SP在2008上运行),
连续进行两部操作:
1,DELETE 2000上的表A
2,把2008上的表B数据插入表A中
问题:
当造的数据对于表A是主键冲突时,catch并没有按照自定义内容输出error信息,而是报系统错误(主键重复相关的错误信息),
我希望报自定义的错误信息。
说明:表B和表A结构一致,但表B没有主键代码如下:
BEGIN BEGIN TRY BEGIN TRANSACTION DELETE FROM sql2000srv.master.dbo.A INSERT INTO sql2000srv.master.dbo.A (
id
,name
)
SELECT
id
,name
FROM sql2008srv.master.dbo.B COMMIT TRANSACTION print 'okokokokokokokokokokokokokokokokok' END TRY BEGIN CATCH ROLLBACK TRANSACTION print 'error error error error error error error error error ' --很遗憾,没有输出 END CATCHEND
SQL SERVER2008访问SQL SERVER2000(SP在2008上运行),
连续进行两部操作:
1,DELETE 2000上的表A
2,把2008上的表B数据插入表A中
问题:
当造的数据对于表A是主键冲突时,catch并没有按照自定义内容输出error信息,而是报系统错误(主键重复相关的错误信息),
我希望报自定义的错误信息。
说明:表B和表A结构一致,但表B没有主键代码如下:
BEGIN BEGIN TRY BEGIN TRANSACTION DELETE FROM sql2000srv.master.dbo.A INSERT INTO sql2000srv.master.dbo.A (
id
,name
)
SELECT
id
,name
FROM sql2008srv.master.dbo.B COMMIT TRANSACTION print 'okokokokokokokokokokokokokokokokok' END TRY BEGIN CATCH ROLLBACK TRANSACTION print 'error error error error error error error error error ' --很遗憾,没有输出 END CATCHEND
ROLLBACK TRANSACTION
END CATCH
试试