BEFORE INSERTトリガーにIF EXIST句を作成して、重複レコードが挿入されないようにする方法はありますか?
-- Create a trigger to prevent a student from registering for a section that the student is already
-- registered for.
USE College ;
DROP TRIGGER IF EXISTS Registration_Before_Insert;
DELIMITER $$
CREATE TRIGGER Registration_Before_Insert
BEFORE INSERT ON Registration
FOR EACH ROW
BEGIN
DECLARE Studentid INT;
SELECT COUNT(*) INTO Studentid FROM Registration WHERE StudentID= NEW.StudentID;
IF NEW.Studentid= 100 AND NEW.SectionID= 16 THEN
\t \t \t \t SIGNAL SQLSTATE VALUE '45000'
\t \t \t \t SET MESSAGE_TEXT= 'The student is already registered for this section';
\t \t END IF ;
END $$
DELIMITER ;
INSERT INTO Registration(StudentID, SectionID, Grade)
VALUES(100, 16, 4.2);
INSERT INTO Registration(StudentID, SectionID, Grade)
VALUES(100, 16, 4.2);
私は、学生が既に登録されているセクションの登録から学生を防ぐために、BEFORE UPDATEトリガーを作成するに取り組んでいますが、私はIFの内EXISTS句を使用するかどうかはわからない私同じレコードを2回挿入すると、そのトリガを起動するトリガ。誰でも助けてくれますか?ここに私のコードはありますか?
何か他に定義された変数studentidを変更する必要があります。しかし、あなたの要件がトリガーなので、私はこれを答えとして掲示しません。 –
@ Tim Biegeleisenなぜ、2番目のINSERTが先に進み、エラーメッセージを表示せずに同じレコードを再度挿入するのかのヒントを教えてください。 – User445555