行。快速背景:从 Access 97 升级的带有 2003/2003 格式 MDB 文件的 MS Access 2003。
出于本示例的目的,有两个表。
Table 1
Asset
ID - (text 20)
ParentID - (text 20)
Other fields
AssetRels
ID - (text 20)
将记录添加到 Asset 时,ID 将添加到 AssetRels。
从 Asset.ID 到 AssetRels.ID 存在一个关系,它通过级联更新和级联删除来强制引用完整性。
从 AssetRels.ID 到 Asset.ParentID 存在仅通过级联更新强制引用完整性的关系。
我在资产中有 2 条记录
VACU0703200, NULL
VACU0703250, VACU0703200
在数据数据库中,我可以进入表格并将 VACU0703200 更改为 VACU0704500,并且更改会按预期传播。
如果我打开链接到数据数据库的前端数据库,并尝试相同的更改(直接在表中)我得到“无法更新;当前锁定”(不,没有关于“另一个会话”,这就是整个错误消息)
对于“默认记录锁定”,两个数据库都设置为“无锁定”
显然,行/页/表级别的锁存在一些差异,这会阻止级联更新工作。
有谁知道我可以在某处使用的一些属性设置来阻止此错误?我宁愿不必删除关系,但否则我可能不得不,并在代码中处理它。
编辑:原因是该表包含一个备注字段。显然,通过链接表,让备忘录字段溢出 4K 行大小会升级为表锁。这反过来又引发了问题。
解决方案(hackish)是防止编辑表单上的 ID 字段,并添加一个新表单来重命名。在打开新表单之前保存更改,并通过更新查询执行更新。