我目前正致力于将代码库从使用Advantage Database Server迁移到SQL Server的项目。
我使用链接到Microsoft SQL Server 2014 Express的XE8的Firedac。
我有一个小测试项目。有一个显示表内容的TDBGrid(查询锁定模式是悲观,锁定点立即)。
我有另一个TQuery
,带有这样的SQL命令:
update myTable
set firstName = 'John'
where id = 1
我的所作所为:
Edit
模式下(通过在单元格中写一些东西)executeSQL
查询Update
那很好......但是我期待一条错误消息告诉我UPDATE
没有通过......
如何在触发错误消息的情况下获得相同的行为?
答案 0 :(得分:0)
使用行锁的基本连接设置:
TFDConnection.UpdateOptions.Lockmode := lmPessimistic;
TFDConnection.UpdateOptions.LockPoint := lmImmediate;
TFDConnection.UpdateOptions.LockWait := False;
描述的行为是SQL Server等待删除锁以完成提交UPDATE。通过将FireDACconnection设置为“无需等待”,只要您尝试通过将数据集置于“编辑”中而锁定的行上,就会引发异常。然后,您可以捕获此异常以执行您想要的操作。