sqlite - 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”列。
解决方案
更改text
列的类型以使用ODBC 支持的数据类型,例如varchar(255)
. 例如,此架构不会产生#Deleted
值:
create table example (
id integer primary key,
sample_type varchar(255)
);
之所以会出现这个问题,是因为 SQLite允许将具有多种不同类型的值插入到同一列中,而 MS Access 对提前知道将插入列中的数据的确切类型非常严格。因此,ODBC 驱动程序必须确定列应该是什么类型。如果您的架构使用 ODBC 数据类型,这很有效,但是如果您创建具有非特定列类型的列,例如text
ODBC 驱动程序,则必须猜测该列应该是什么类型。看起来不正确的猜测可能导致了这些#Deleted
值。
推荐阅读
- sql - 如何在分组后组合值为varchar的列
- angular - Angular 4在http post请求后获取函数返回值
- php - 从模型 laravel 访问关系
- java - 如果excel中的单元格值为null,我尝试通过在java中使用if语句来分配一个值
- yii2 - 通过 Yii2 中的自定义控制器为特定用户启用调试器工具
- javascript - 获取“堂兄弟”的属性
- c# - C# 将带有字符串的结构编组到 C 库
- undefined - GNU Octave:“形状”未定义,即使它被定义为函数参数
- javascript - 从 C# 变量中获取数据表属性的值
- javascript - 如何添加视频元素并使其在启用声音的情况下自动播放