首页 > 解决方案 > Access 中的 SQLite 链接表仅在插入新值后才给出 #Deleted 值

问题描述

在 MS Access (Office 365) 中,我使用SQLite ODBC 驱动程序(0.9996) 链接到 SQLite 3 数据库中的表。

问题

当我打开链接表时,它可以显示其内容,但是在我向表中插入新条目后,它会显示#Deleted在新条目的每个字段中。关闭并重新打开表格将正确显示新条目。如何防止这种异常行为,以便在插入新条目后它们可以正常显示,而无需关闭并重新打开表格?

重现步骤

在 中创建下表example.sqlite

create table example (
id integer primary key,
sample_type text
);

使用 SQLite ODBC 驱动程序创建一个链接表,并尝试将值插入“sample_type”列。

标签: sqlitems-accessodbc

解决方案


更改text列的类型以使用ODBC 支持的数据类型,例如varchar(255). 例如,此架构不会产生#Deleted值:

create table example (
id integer primary key,
sample_type varchar(255)
);

之所以会出现这个问题,是因为 SQLite允许将具有多种不同类型的值插入到同一列中,而 MS Access 对提前知道将插入列中的数据的确切类型非常严格。因此,ODBC 驱动程序必须确定列应该是什么类型。如果您的架构使用 ODBC 数据类型,这很有效,但是如果您创建具有非特定列类型的列,例如textODBC 驱动程序,则必须猜测该列应该是什么类型。看起来不正确的猜测可能导致了这些#Deleted值。


推荐阅读