Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Delphi Firedac SQL Server:由于记录被锁定,更新失败时不会引发错误_Sql Server_Delphi_Error Handling_Locking_Firedac - Fatal编程技术网

Sql server Delphi Firedac SQL Server:由于记录被锁定,更新失败时不会引发错误

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

我目前正在进行一个项目,将代码库从使用Advantage Database Server迁移到SQL Server

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

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

我还有另一个
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中。在我的应用程序中,该字段是从更新查询中更新的。