我有一个链接到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
以上都不适用
答案 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侧记录。祝你好运。