删除触发器有效,但客户端仍显示删除

时间:2014-08-28 06:34:05

标签: sql-server ms-access

我有一个"而不是删除"触发器,"忽略"删除某些记录(因此,实际上,某些记录无法删除)。到目前为止,这非常有效。

现在,我通过MS Access中的链接表连接到表。如果我删除那里的记录,那么Access会删除它们,因此"显示"他们被删除了。只有当我刷新表格时,才会再次显示被忽略的记录。

所以最后触发器工作,但用户得到错误的反馈。可以以某种方式重写删除触发器,以便MS Access知道该记录无法删除吗?

触发器如下所示:

CREATE TRIGGER trig ON  tblX
INSTEAD OF DELETE
AS 
BEGIN
    SET NOCOUNT ON;

    DELETE FROM tblX 
    WHERE IDField IN 
    (
        SELECT IDField
        FROM deleted
        WHERE (...conditions...)
    );

END

1 个答案:

答案 0 :(得分:2)

如果删除Access中的记录,Access似乎会立即在用户界面(例如您正在查看的表格)中执行此删除操作,以便为您提供即时的视觉反馈。它将delete-command发送到SQL Server,但不刷新其基础RecordSet。因此Access无法知道SQL Server毕竟没有执行删除。

你唯一的解决方案是在删除后以编程方式/手动触发你正在查看的数据的重新查询(=刷新底层的RecordSet),正如krish KM建议的那样。据我所知,这只有在查看表单中的数据时才有可能,而不是在打开表本身时。