【问题标题】:MS Access: Multi-Field Unique Index Not WorkingMS Access:多字段唯一索引不起作用
【发布时间】:2018-02-14 15:11:38
【问题描述】:

我超过 3 个字段的唯一索引不起作用。我能够输入副本。 我的所有字段都设置为“必填”并且没有任何空值。我已经尝试过重新创建表和索引。在对我的表的查询中,我的一个重复项没有在它应该出现的时候出现。

我的查询是:

SELECT Transactions.Transaction_ID, Transactions.Transaction_Time
FROM Transactions
WHERE (((Transactions.Transaction_Time)=#9:17:46 PM#));

但是,此查询检索两个重复项:

SELECT Transactions.Transaction_ID, Transactions.Transaction_Time
FROM Transactions
WHERE (((Transactions.Transaction_Date)=#2/3/2018#));

和这个一样:

SELECT Transactions.Transaction_ID, Transactions.Transaction_Time
FROM Transactions
WHERE (((Transactions.Amount)=-68.47));

这里出了什么问题?

【问题讨论】:

  • 将日期和时间合并到一个字段。或将日期和时间保存为数字。

标签: database ms-access indexing


【解决方案1】:

在日期或时间值上创建唯一索引是一件有风险的事情,原因有两个:

1:时间字段始终是 DateTime 字段。只是不显示日期。但是日期当然可以不相等。在这两个副本之间。日期字段也是如此:它们也是 DateTime,但不显示时间。

2:Access 中的 DateTime 字段实际上是浮点数。这意味着虽然只能显示以秒为单位的时间,但两个值之间可能存在几分之一毫秒的差异。请参阅this question 上的讨论和回答。

可能是这些原因中的一个或两个导致唯一约束不触发。

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 2012-06-25
    • 2023-03-07
    • 2015-06-16
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多