Sql server Delphi Firedac SQL Server:由于记录被锁定,更新失败时不会引发错误
我目前正在进行一个项目,将代码库从使用Advantage Database Server迁移到SQL Server 我正在使用链接到Microsoft SQL Server 2014 Express的XE8 Firedac 我有一个小测试项目。有一个TDBGrid显示表的内容(查询锁定模式为悲观,锁定点立即) 我还有另一个Sql server Delphi Firedac SQL Server:由于记录被锁定,更新失败时不会引发错误,sql-server,delphi,error-handling,locking,firedac,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 我所做的: 我将第一行置于Edit
TQuery
,使用如下SQL命令:
update myTable
set firstName = 'John'
where id = 1
我所做的:
Edit
模式(通过在单元格中写入内容)Update
查询上运行executeSQL
更新没有通过
如何在触发错误消息的情况下获得相同的行为?使用行锁的基本连接设置:
TFDConnection.UpdateOptions.Lockmode := lmPessimistic;
TFDConnection.UpdateOptions.LockPoint := lmImmediate;
TFDConnection.UpdateOptions.LockWait := False;
所描述的行为是SQL Server等待移除锁以完成提交更新。通过将FireDACconnection设置为“no wait”,一旦您试图对已锁定的行执行某些操作(将数据集置于编辑状态),就会引发异常。然后,您可以捕获此异常以执行所需操作。是否重新启动应用程序并发现名称不是john?在MS Sql Server Management Studio中执行相同更新时会发生什么情况?萨米:没错。名称不是John.MartynA:我在行处于编辑模式时执行更新。在Management Studio中的“执行查询…”之前会出现一个时间光标。当我退出编辑模式时:绿色复选标记和消息“Query executed successfully”出现在Management Studio中。在我的应用程序中,该字段是从更新查询中更新的。