Триггер не работает в пустоту, то есть, например, в таблице
Regions
должно быть поле
StudentCount
. Но это неправильно.
Создайте представление по регионам с подсчетом количества студентов.
Добавил поле для сохранения количества студентов:
ALTER TABLE dbo.Regions ADD StudentCount int NULL
Для сохранения актуальности нужно делать триггер на все действия:
CREATE OR ALTER TRIGGER StudentRegionCulc ON Students AFTER INSERT, UPDATE, DELETE
AS
BEGIN
UPDATE Regions
SET StudentCount =
( SELECT COUNT(*)
FROM Students WHERE Students.Region = inserted.Region )
FROM inserted
INNER JOIN Regions ON inserted.Region = Regions.ID
UPDATE Regions
SET StudentCount =
( SELECT COUNT(*)
FROM Students WHERE Students.Region = deleted.Region )
FROM deleted
INNER JOIN Regions ON deleted.Region = Regions.ID
END
GO
Результат:
SELECT ID, Region, StudentCount,
( SELECT COUNT(*)
FROM Students
WHERE Students.Region = Regions.ID ) AS StudentCountCheck
FROM Regions