【发布时间】:2011-05-07 05:43:17
【问题描述】:
当您使用 Access 创建外键约束(通过数据库架构编辑器)时,您可以选择启用或禁用以下选项(实际标题可能不同,我只有 Access 的本地化版本):
x Enforce data integrity
x Cascade updates
x Cascade deletions
在 DDL 中,后两者可以表示为:
ADD CONSTRAINT Constraint1
FOREIGN KEY (Field1)
REFERENCES Table2 (Table2Field1)
ON UPDATE CASCADE
ON DELETE CASCADE
但是你如何模拟没有一个复选框被打开的情况,甚至没有“强制完整性”?
仅删除“ON UPDATE/ON DELETE”子句仍会产生等效于“强制完整性”约束(因此要求 Field1 和 Table2Field1 具有索引)。
【问题讨论】:
-
这里有一个可能感兴趣的讨论:dbforums.com/microsoft-access/…
-
您认为在没有参照完整性的情况下创建关系有什么价值?
-
@HansUp:我正在编写一个工具来导出 Access 数据库架构,然后解析 SQL 并重新创建数据库。如果有人在他们的数据库中有这种关系,我不能忽略它。
-
@himself:为什么不按正确的顺序重新创建表以使约束有效?您只会遇到麻烦,然后对于具有相互引用的表,在这种情况下,您需要在创建表之一后添加约束
-
@himself :我认为您将不得不使用 DAO 和 ADO 来复制数据库。这不是您在 ADO 中重新创建时遇到的唯一问题。