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

SQL创建CUSTOMER表设置级联规则时ON关键字附近语法错误求助

问题排查与解决方案

错误原因

  • 主键约束定义存在语法错误:PRIMARY KEY(id)后多写了多余逗号,ON UPDATE CASCADE、ON DELETE CASCADE属于当前主键约束的配置项,不能用逗号和前面的主键定义分隔。此外SQL Server的主键约束本身无需配置级联更新/删除,级联操作属于外键约束的常用配置,此处两行级联配置属于冗余内容,可直接删除。
  • 多约束之间缺少分隔符:主键约束结束后、两个CHECK约束之间都没有添加逗号,SQL要求多个并列的约束定义必须用逗号分隔。
  • 可选优化:原有年龄判断逻辑仅对年份做差值,容易出现未过生日就被判定为满21岁的误差,可以替换为DATEDIFF(YEAR, DateofBirth, GETDATE()) > 21让判断更精准。

修正后的SQL代码

CREATE TABLE CUSTOMER
(
    id           CHAR(9)      NOT NULL,
    CustomerName CHAR(50)     NOT NULL,
    Address      VARCHAR(100) NOT NULL,
    Contact      CHAR(8)      NOT NULL,
    DateofBirth  DATE         NOT NULL,
    Occupation   VARCHAR(30)  NOT NULL,

    CONSTRAINT CUSTOMER_PK  
        PRIMARY KEY(id),
    CONSTRAINT CHECK (ID LIKE '[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z]'),
    CONSTRAINT CHECK (DATEDIFF(YEAR, DateofBirth, GETDATE()) > 21)
);

内容的提问来源于stack exchange,提问作者Ang Yi Khoon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:21:04