MS-ACCESS通过" Pass-Through"删除ODBC链接表中的行

时间:2014-04-23 15:04:56

标签: sql ms-access odbc ms-access-2007 pass-through

我有一个链接到ODBC表的表,ODBC数据库名是CUSTOMER_USER,表的名称是CUSTOMER_INFO,我需要使用Pass-through来删除ODBC链接表中的所有记录" CUSTOMER_USER_CUSTOMER_INFO"如果记录的日期与currentdate不同。我尝试了以下代码并选择了#34; Pass-Through"在查询设计选项卡中,但它始终返回错误消息

DELETE CUSTOMER_USER_CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

我也试过

DELETE CUSTOMER_USER.CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

DELETE CUSTOMER_USER_CUSTOMER_INFO.*
FROM CUSTOMER_USER_CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

甚至

DELETE CUSTOMER_USER.CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO

以上都不适用

2 个答案:

答案 0 :(得分:0)

试试这个?还包括一个NULL过滤器。 NOW()可能会出现问题。 DATE()不应该。您可能需要关闭直通,因为DATEVALUE是一个JET函数。

DELETE
FROM CUSTOMER_USER_CUSTOMER_INFO
WHERE DATEVALUE(SUBMIT_DT) <> DATE()
    AND SUBMIT_DT IS NOT NULL;

答案 1 :(得分:0)

我知道这是一个老线程,但我也有这个问题。需要注意的一件事是SQL Server上的1对多关系与要删除的表有关。如果存在已定义的1对多关系并且您尝试从关系的1侧删除,则SQL服务器将保留参照完整性,并且如果在多边上有相关记录,则不允许您从1侧删除关系。

另一个棘手的问题是,可能无法立即明确在哪里找到这些关系。您可以查看SQL Server上的关系按钮,但问题也可能存在于一侧的表的DELETE触发器中。所以有几个地方需要检查。您将需要修改DELETE触发器或手动删除多个侧记录,然后删除1侧记录。祝你好运。