【问题标题】:MS Access 10 - syntax error with constraintsMS Access 10 - 带有约束的语法错误
【发布时间】:2022-11-28 02:27:44
【问题描述】:

我想在 MS Access 2010 中编写一个 SQL 查询来创建一个表,以便属性“day”的值应在我使用“check”关键字给出的约束内。检查约束在保存查询时出错。

我在 MS Access 2010 中编写了一个 SQL 查询,如下所示-

CREATE TABLE timeslot
(
    time_slot_id varchar (4),
    day varchar (1) check (day in ('M', 'T', 'W','R', 'F', 'S', 'U')),
    start_time time,
    end_time time,

    primary key (time_slot_id, day, start_time)
);

但是在保存查询时,我收到一个错误弹出窗口说

创建表语句中的语法错误

它指向 check 关键字。当我删除检查约束时,它成功运行并且创建了表时隙,而没有对“天”属性应用约束。我在使用“检查”时在语法上是错误的吗?如何对“day”属性应用约束?

【问题讨论】:

标签: sql ms-access-2010 keyword


【解决方案1】:

CHECK 在那里无效,您可以移入其自己的子句(逗号后):

CREATE TABLE timeslot
(
    time_slot_id varchar (4),
    day varchar (1) check (day in ('M', 'T', 'W','R', 'F', 'S', 'U')),
    start_time time,
    end_time time,

    primary key (time_slot_id, day, start_time),
    check (day in ('M', 'T', 'W','R', 'F', 'S', 'U'))
);

编辑

或者,您可以将 day 指定为 enum,例如

CREATE TABLE timeslot
(
    time_slot_id varchar (4),
    day enum('M', 'T', 'W','R', 'F', 'S', 'U'),
    start_time time,
    end_time time,

    primary key (time_slot_id, day, start_time)
);

【讨论】:

  • 如果校验码在那个位置无效,为什么它还在你的ddl中
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 2012-10-24
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多