如何在触发器中将列增加1?

时间:2011-12-12 12:51:05

标签: mysql triggers

我需要帮助编写MySQL触发器。

假设您有一个包含以下表格的学生数据库:

ENROLLMENT(SSN, CLASS_NO, GRADE)
CLASS(CLASS_NO, CLASS_TITLE, NO_OF_STUDENTS).

如果将新学生添加到NO_OF_STUDENTS的{​​{1}}表中,我需要编写一个触发器,将ENROLLMENT增加一个。

4 个答案:

答案 0 :(得分:6)

你可以使用mysql触发器来做到这一点。尝试像

这样的东西
CREATE TRIGGER 'database_name'.'after_insert_enrollment' AFTER INSERT ON 'ENROLLMENT' 
FOR EACH ROW
BEGIN
UPDATE class SET NO_OF_STUDENTS = NO_OF_STUDENTS +1 WHERE CLASS_NO = NEW.CLASS_NO;
END

答案 1 :(得分:1)

如果删除了注册,我也会减少no_of_studens

delimiter //
CREATE TRIGGER AFTER_INS_ENROLLMENT AFTER INSERT ON ENROLLMENT
FOR EACH ROW
BEGIN
    UPDATE CLASS SET NO_OF_STUDENTS = NO_OF_STUDENTS + 1 WHERE CLASS_NO = NEW.CLASS_NO;
END;//
delimiter;

delimiter //
CREATE TRIGGER AFTER_INS_ENROLLMENT AFTER DELETE ON ENROLLMENT
FOR EACH ROW
BEGIN
    UPDATE CLASS SET NO_OF_STUDENTS = NO_OF_STUDENTS - 1 WHERE CLASS_NO = NEW.CLASS_NO;
END;//
delimiter ;

答案 2 :(得分:1)

为什么要将它存储在唱片中?也许你应该使用 从Class_Id = @Class_Id

的学生中选择COUNT(Student_Id)

答案 3 :(得分:0)

你有没有试过像:

delimiter |

CREATE TRIGGER testref BEFORE INSERT ON ENROLLMENT
  FOR EACH ROW BEGIN
    UPDATE CLASS SET NO_OF_STUDENTS = NO_OF_STUDENTS + 1 WHERE CLASS_NO = NEW.CLASS_NO;
  END;
|

delimiter ;