我需要为Meetup创建一个表,其中包含患者ID、doctor ID、会议更新和类型. 如果类型是IRM,如果最后一次不到两个月前,我就不能再有第二次会议了. 我需要用支票来做,但它不起作用. 以下是我的代码:

CREATE TABLE MeetUp (
    MeetUp ID INT AUTO_INCREMENT PRIMARY KEY,
    PatientID INT,
    DoctorID INT,
    MeetUpDate DATE,
    ExamType VARCHAR(50)
    CHECK (ExamType <> 'IRM' OR (
        NOT EXISTS (
            SELECT 1
            FROM MeetUp AS M2
            WHERE M2.PatientID = MeetUp.PatientID
              AND M2.ExamType = 'IRM'
              AND DATE_ADD(M2.MeetUpDate , INTERVAL 2 MONTH) > MeetUp.MeetUpDate
        )
    )),
    Realise TINYINT(1) NOT NULL,
    CONSTRAINT fk_patient FOREIGN KEY (PatientID) REFERENCES Patients(patient_id),
    CONSTRAINT fk_doctor FOREIGN KEY (DoctorID) REFERENCES Doctors(doctor_id)
);

它给我一个错误"#1146-桌子‘Meetup’不存在" 我正在使用PhpMyAdmin

我对数据库和SQL完全陌生,真的不知道有什么问题

我试着问Chat GPT,但他告诉我使用触发器,但我需要使用Check

推荐答案

我需要使用支票.

对不起,支票不能做你所描述的事情.

https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html表示:

  • 不允许使用子查询.

事实上,CHECK约束不能引用同一个表中的其他行,也不能引用其他表.CHECK约束中的表达式只能引用同一行中的其他列(但不能引用生成的列或自动增量列)和确定性函数的有限子集.

你需要用一种不同的方式解决这项任务.

Mysql相关问答推荐

在MySQL中从非连续数据创建时间线

LaravelEloquent ToSql()缺少连接表

使用JSON_CONTAINS搜索多个值的原理

警告:MYSQL_OPT_RECONNECT 已弃用

SQL查询连接到多个类别的项目

对匹配两个或多个表的表结果进行排序

GoRM中行最大值查询返回"0"

为两个中的每一个 Select 最大和最小传递条件

如何在 Shopware 6 DAL 中实施 Haversine 公式?

为生日创建 MySQL 索引

从 R 脚本创建新的 MYSQL 数据库

MySQL 使用了错误的索引

为什么这个查询需要超过 5 秒才能运行?

访问 nodejs、mysql 和 json 中的嵌套对象数组

了解 SQL 中的元组语法

如何通过未知列中的唯一值有效地更新 MySQL 行

mysql从另一个表中 Select 不相等的值

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

MySQL - 我如何输入 NULL?

如果另一列为空,则 Select 一列