【问题标题】:MS-ACCESS Delete Rows in ODBC Linked Table via "Pass-Through"MS-ACCESS 通过“传递”删除 ODBC 链接表中的行
【发布时间】:2014-04-23 15:04:55
【问题描述】:

我有一个链接到 ODBC 表的表,ODBC 数据名称是 CUSTOMER_USER,表的名称是 CUSTOMER_INFO,我需要使用 Pass-through 删除 ODBC 链接表“CUSTOMER_USER_CUSTOMER_INFO”中的所有记录,如果那些日期记录与当前日期不同。我尝试了以下代码并在查询设计选项卡中选择了“传递”,但它总是返回错误消息

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

以上都不行

【问题讨论】:

  • 它返回的错误信息是什么?
  • @Siyual 它返回“ODBC - 调用失败,错误:“CUSTOMER_USER”处或附近的语法错误;执行查询时出错 (#7)”
  • 尝试删除CUSTOMER_USER.CUSTOMER_INFO.* 你的语法应该是DELETE FROM Table WHERE Condition

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


【解决方案1】:

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

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

【讨论】:

  • 不,我需要Passthrough来修改CUSTOMER_USER_CUSTOMER_INFO表,因为这个表是我当前数据库中的ODBC链接表
  • 我只是担心,因为我实际上并没有将查询挂钩到 ODBC 链接表。查询是否作为直通?
  • 我主要关心的是现在与日期的使用。现在包括时间戳
【解决方案2】:

我知道这是一个旧线程,但我也遇到了这个问题。要注意的一件事是 SQL Server 上与您要从中删除的表的一对多关系。如果定义了一对多关系并且您尝试从关系的 1 侧删除,SQL Server 将保留引用完整性,并且如果在“多”侧有相关记录,则不允许您从 1 侧删除关系。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2013-04-13
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    相关资源
    最近更新 更多