【发布时间】:2017-05-01 14:03:09
【问题描述】:
我有一个按预期工作的存储过程。片段如下所示:
BEGIN
SET XACT_ABORT ON;
BEGIN TRANSACTION;
INSERT Table1...;
INSERT Table2...;
COMMIT TRANSACTION;
END
如果 Table2 发生错误,Table1 的插入会回滚。问题在于对存储过程的 Java 调用。如果 XACT_ABORT 开启,下面的代码不会抛出异常;
psmt = conn.prepareStatement(query);
psmt.setInt(1, id);
psmt.execute();
psmt.close();
我看到当我在 SQL Server Management Studio 中执行存储过程时,似乎返回了两条消息。一种成功,一种错误:虽然插入被回滚。
(1 row(s) affected)
Msg 515, Level 16, State 2...
在 Java 调用中需要什么来识别异常/错误? ...阅读所有消息?
【问题讨论】:
-
对于其他搜索此内容的人。正如 Andomar 所说,并非所有客户端库都正确编写。请参阅以下内容:link
标签: java sql-server exception transactions