You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建MS Access SQL表报错:约束子句存在语法错误

解决MS Access建表约束语法错误问题

你的代码报错是因为MS Access的Jet/ACE引擎不支持外键约束里的ON UPDATE CASCADE选项,这是Access SQL和标准SQL的差异点。

修正后的代码

CREATE TABLE Project
(
    ProjectID INTEGER NOT NULL,
    Name VARCHAR(25) NOT NULL,
    DepartmentName VARCHAR(20) NOT NULL, 
    MaxHours NUMERIC NOT NULL,
    StartDate DateTime,
    EndDate DateTime,

    CONSTRAINT PK_ProjectID PRIMARY KEY (ProjectID),
    CONSTRAINT FK_DepartmentName 
        FOREIGN KEY (DepartmentName) REFERENCES Department (DepartmentName)
        ON DELETE NO ACTION
)

修改说明

  • 删掉了ON UPDATE CASCADE:Access的外键约束不支持更新级联操作,默认行为就是当你尝试更新父表Department的DepartmentName字段时,如果子表Project有关联记录,系统会阻止这个操作(等同于ON UPDATE NO ACTION),这个行为无法通过外键约束修改。
  • 保留ON DELETE NO ACTION:这是Access外键的默认删除行为,显式写出也没问题,意思是删除父表记录时,如果子表有关联数据,系统会阻止删除操作。
  • 如果确实需要实现更新级联的效果,只能手动编写更新触发器来完成,Access本身不提供这个外键约束选项。

内容的提问来源于stack exchange,提问作者Diana Grigoriants

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:05:56