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

あなたのテーブルを見ると、碑文を挿入しようとすると、すでにexaidがわかります。そのため、碑文を挿入する前に試験を取得して、進行中かどうかを確認できます。挿入しない場合は挿入し、そうでない場合は挿入します。

于 2012-12-20T02:15:44.490 に答える