2

是否可以在某个日期和时间之后阻止插入 mysql 表?

例如我有 2 张桌子:

TABLE exams 
(
...
examID int primary key auto_increment,
examDate DATE,
examTime TIME, 
...
)


TABLE inscripts
(
...
examID int not null references exams(examID),
insDate DATE,
insTime TIME,
...
)

我想防止在考试进行时插入新的铭文。

有一些功能可以防止这种情况或轻松检查当前日期和当前时间是否等于或大于匹配表中的日期和时间?

4

2 回答 2

2

您可以创建一个触发器,在继续之前验证插入。伪代码,但类似于:

DELIMITER |
CREATE TRIGGER `Stop_Insert_During_Exam`
BEFORE UPDATE ON `inscripts`
FOR EACH ROW
BEGIN
  DECLARE msg VARCHAR(255);
  -- Check
  -- Test if an exam is going on. If so:
  SET msg = "You cannot add an inscription while an exam is going on.';
  SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
  -- /Check
END;
|
于 2012-12-20T02:16:14.773 回答
1

看着您的桌子,当您尝试插入题词时,您已经知道考试了。因此,您可以在插入题词之前抓住考试并检查它是否正在进行中。如果只是不要插入它,如果不是则插入它。

于 2012-12-20T02:15:44.490 回答