Delphi Firedac SQL Server:由于记录被锁定,更新失败时没有引发错误

时间:2017-03-15 18:36:53

标签: sql-server delphi error-handling locking firedac

我目前正致力于将代码库从使用Advantage Database Server迁移到SQL Server的项目。

我使用链接到Microsoft SQL Server 2014 Express的XE8的Firedac。

我有一个小测试项目。有一个显示表内容的TDBGrid(查询锁定模式是悲观,锁定点立即)。

我有另一个TQuery,带有这样的SQL命令:

update myTable 
set firstName = 'John'
where id = 1

我的所作所为:

  1. 我把第一行放在Edit模式下(通过在单元格中写一些东西)
  2. 当我按下某个按钮时,它会在executeSQL查询
  3. 上运行Update
  4. 没有任何反应 - 更新查询未通过
  5. 那很好......但是我期待一条错误消息告诉我UPDATE没有通过......

    如何在触发错误消息的情况下获得相同的行为?

1 个答案:

答案 0 :(得分:0)

使用行锁的基本连接设置:

TFDConnection.UpdateOptions.Lockmode := lmPessimistic;

TFDConnection.UpdateOptions.LockPoint := lmImmediate;

TFDConnection.UpdateOptions.LockWait := False;

描述的行为是SQL Server等待删除锁以完成提交UPDATE。通过将FireDACconnection设置为“无需等待”,只要您尝试通过将数据集置于“编辑”中而锁定的行上,就会引发异常。然后,您可以捕获此异常以执行您想要的操作。