Как я могу увеличить столбец на единицу в триггере? - PullRequest
2 голосов
/ 12 декабря 2011

Мне нужна помощь в написании триггера MySQL.

Предположим, у вас есть база данных студентов со следующими таблицами:

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

Мне нужно написать триггер, чтобы увеличить NO_OF_STUDENTS наодин, если новый ученик добавляется в таблицу ENROLLMENT для этого CLASS_NO.

Ответы [ 4 ]

6 голосов
/ 12 декабря 2011

Вы можете использовать триггер 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 голос
/ 08 ноября 2013

Зачем вам хранить это в записи?Возможно, вам следует использовать Select COUNT (Student_Id) из студентов, где Class_Id = @ Class_Id

1 голос
/ 12 декабря 2011

Я бы также уменьшил 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 ;
0 голосов
/ 12 декабря 2011

Вы пробовали что-то вроде:

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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...