使用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具有索引)。
答案 0 :(得分:1)
我认为你正在混淆与ACE / Jet FOREIGN KEY
的访问'关系'。
通常,您不能使用SQL DDL来创建Access对象(即使这些对象持久存储在ACE / Jet表中)。另一个例子是验证规则但您可以使用SQL DDL创建CHECK
约束(实际上不能以任何其他方式创建)更强大(例如,每个表可以多于一个,可以引用同一个表中的其他行)或者在其他表格等),但验证规则显示在带有CONSTRAINT_TYPE ='CHECK'的adSchemaTableConstraints模式VIEW中。
答案 1 :(得分:0)
如果您不希望执行完整性,那么您实际上不希望约束,因为外键约束的目的是通过公共字段强制实现两个表之间的关系。我可以看到它,如果您不希望执行完整性,级联更新或删除级联,您根本不需要约束。把它关掉。
我认为在某些数据库(例如Oracle)中你可以创建约束但是禁用它 - 但除了纪录片的好处之外,这似乎毫无意义。无法在Access中禁用AFAIK约束,但我可能错了。
分享并享受。
答案 2 :(得分:0)
添加外键约束时使用NOCHECK选项。有关详细信息,请参阅此页: