Я изучаю SQL Server 2008 Trigger и у меня возник вопрос об использовании вставленных данных для сравнения данных внутри таблицы.
Например,
Допустим, у нас есть таблица "testTb1"
внутри таблицы
|id|section_id|current_num_student|max_num_student|
|1 |1 | 23 | 23 |
|2 |3 | 21 | 29 |
|3 |5 | 50 | 50 |
current_num_student - это количество учеников в классе, а max_num_student является максимальным в классе.max_num_student будет определяться учителем, поэтому это могут быть любые числа.
теперь ученик хочет добавить раздел 5, однако current_num_student равен max_num_student.Поэтому мы должны отклонить студента.
запрос похож на ..
update testTb1 SET current_num_student = current_num_student + 1 WHERE section_id = ?
"?"будет вводить данные пользователем в jsp.
, поэтому я пытался сделать триггер, такой как ...
CREATE TRIGGER testTrg
on dbo.testTb1
AFTER UPDATE
AS
IF EXISTS(select section_id FROM inserted i join dbo.testTb1 m on i.section_id = m.section_id
AND m.num_cur = m.num_max)
BEGIN
RAISERROR ('Can not update data because class is full', 16,1);
ROLLBACK TRANSACTION;
RETURN
END
что-то в этом роде
однако яполучаю ошибку как ..
Я не совсем уверен, как решить проблему ..