我必须使用 SQL 语句在 Microsoft Access 中创建一些表,并且一些表具有外键。
我想使用 SQL 指定外键的约束和规则:
- 是否允许 NULL
- 删除规则
- 更新规则
如何使用 SQL 指定 Microsoft Access 中的外键规则?
答案1
我终于找到了一些东西访问文档。
定义 FOREIGN KEY 约束的 CONSTRAINT 子句接受以下语法:
CONSTRAINT FOREIGN KEY (ref1[, ref2[, ...]]) REFERENCES table
ON UPDATE [CASCADE | SET NULL]
ON DELETE [CASCADE | SET NULL]
我认为,为了指定该 FOREIGN KEY 是否允许为 NULL,必须添加不同的约束
CONSTRAINT NOT NULL (ref)
或者直接在 CREATE TABLE 子句中定义该字段时指定 NOT NULL。
但是,当我输入“ON UPDATE”和“ON DELETE”时,出现语法错误,提示不被接受,而当我删除这些规则时不会出现该错误。
编辑于2010-06-06:
此语法是正确的并且能正常工作,但为了让 Access 接受它,必须满足以下要求:
- 您必须使用 Access 2003 及更高版本。
- 在菜单“工具 > 选项”的“表或查询”选项卡中,您必须指定至少对于当前数据库“语法与 SQL Server(ANSI 92)兼容”。
在我的 Access 2003 中进行了上述配置后,它现在可以正常工作了!Access 不再显示该错误消息,并且现在允许使用该语法来指定外键的删除和更新规则!
如果未指定其中任何一条规则,Access 会假定它受到限制。换句话说,如果未指定删除规则或更新规则,Access 会分别限制删除或更新。