2016-09-25 19 views
0

MySQLデータベースの最初のトリガーを作成しようとしました。 "course_student"の現在の時刻と "の容量"の中の指定されたタイムスタンプの文脈で、はの挿入を防止する必要がありますが、まだ構文エラーが発生しています。MySQLのトリガー:IF文による挿入の防止

DELIMITER $$ 

CREATE TRIGGER checkSubscribeTimeCourse 
BEFORE INSERT ON course_student 
REFERENCING NEW AS new 
FOR EACH ROW 

BEGIN 

    IF (SELECT COUNT(*) FROM capacity c, course_capacity cc 
     WHERE c.cid = cc.cid 
     AND cc.cid = new.cid 
     AND (c.end >= CURRENT_TIMESTAMP OR c.end IS NULL) 
     AND (c.start <= CURRENT_TIMESTAMP OR c.start IS NULL)<1) 
    THEN 
     SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT = 'Error' 
    END IF 

END 

DELIMITER ; 

私はすべての名前を翻訳しました。多分タイプミスがあります。

答えて

2

いくつかのカンマがありません。最後には、いくつかのSQLとデリミタがあります。

DELIMITER $$ 

CREATE TRIGGER checkSubscribeTimeCourse 
BEFORE INSERT ON course_student 
FOR EACH ROW 
BEGIN 

    IF (SELECT COUNT(*) FROM capacity c, course_capacity cc 
     WHERE c.cid = cc.cid 
     AND cc.cid = new.cid 
     AND (c.end >= CURRENT_TIMESTAMP OR c.end IS NULL) 
     AND (c.start <= CURRENT_TIMESTAMP OR c.start IS NULL)<1) 
    THEN 
     SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT = 'Error'; 
    END IF; 

END$$ 

DELIMITER ; 
関連する問題