Создайте триггер, который автоматически будет увеличивать или уменьшать [КолСотр] в таблице [Отделы] при добавлении или удалении записей в таблице [Сотрудники].
CREATE TRIGGER sampleTrigger
ON database1.dbo.[СОТРУДНИКИ]
FOR DELETE
AS
UPDATE database1.dbo.[ОТДЕЛЫ]
SET [КОЛСОТР] -= 1
WHERE [КОДОТДЕЛА] = (SELECT deleted.[КОДОТДЕЛА] FROM deleted)
GO
Но я думал, что триггер вызывается для каждой удаляемой записи, разве нет?
Как узнать триггеру значение поля удаляемой строки?
CREATE TRIGGER TriggerTwoDelete
ON Сотрудники FOR DELETE
AS BEGIN
DECLARE @NumDepart AS TINYINT = (SELECT COUNT(*) FROM [Отделы]);
-- @NumDepart - количество существующих отделов
DECLARE @CurDepart AS TINYINT = 1;
-- @CurDepart - текущий отдел
WHILE @CurDepart <= @NumDepart
BEGIN
UPDATE [Отделы]
SET [КолСотр] -= (SELECT COUNT(deleted.[КодОтдела])
FROM deleted WHERE [КодОтдела] = @CurDepart)
FROM [Отделы] WHERE [КодОтдела] = @CurDepart;
SET @CurDepart = @CurDepart + 1;
END;
END;