我有这种关系。我必须暂时销毁它只是为了使用SQL命令改变“salID”字段的大小:
ALTER TABLE Adressen DROP CONSTRAINT [ChildTableMainTable]
如何使用SQL命令重新创建相同的关系类型? 如果我使用下一个SQL,我会得到一对多的关系。这不是我需要的:
ALTER TABLE MainTable ADD CONSTRAINT [ChildTableMainTable] FOREIGN KEY (salID) REFERENCES [ChildTable] (ChildPK);
答案 0 :(得分:9)
据我所知,Access DDL根本不支持创建Access"关系"没有"强制参照完整性"。 CREATE CONSTRAINT
将创建一个关系与"强制参照完整性"因为这就是这样一种关系:参考完整性约束。
(ON UPDATE
的{{1}}和ON DELETE
条款控制"级联更新相关字段"和#34;级联删除相关记录&#34的值;“编辑关系”对话框中的复选框,但它们不控制"强制参照完整性"复选框本身的值。)
换句话说,没有"强制参照完整性的关系"根本不是约束。它只是一个提示"这些表通过指定的字段相关,例如,如果将表添加到查询设计中,查询生成器可以自动连接表。
创建没有"强制参照完整性的关系"你需要使用Access DAO。对于像这样的关系
VBA中所需的代码是
CREATE CONSTRAINT
答案 1 :(得分:1)
首先,你的" Cihld" (有人真的拼错了Child那么糟糕并将其留在架构中吗?)表实际上是父表,而Main表是子表,根据定义的关系:子表的外键列被约束为具有来自父表的主键值。这种混合,加上拼写错误强烈暗示一团糟。
尽管如此,允许将外键列定义为可空(即不使用NOT NULL
修饰符定义它们)。执行此操作,只需将外键列设置为NULL
您想要不约束回父表的行。