Вы настраиваете себя на проблему синхронизации данных. Поскольку строки в таблице Leads вставляются, обновляются или удаляются, необходимо постоянно обновлять столбец Employees.LeadCount.
Лучшим решением было бы вообще не хранить столбец LeadCount, а пересчитать количество отведений с помощью сводного запроса SQL, если вам нужно это значение. Таким образом, это всегда будет правильно.
SELECT employeeID, COUNT(leadId) AS LeadCount
FROM Leads
GROUP BY employeeID;
Другим решением является создание триггеров в таблице Leads для INSERT, UPDATE и DELETE, чтобы вы всегда поддерживали актуальность столбца Employees.LeadCount. Например, используя синтаксис триггера MySQL:
CREATE TRIGGER leadIns AFTER INSERT ON Leads
FOR EACH ROW BEGIN
UPDATE Employees SET LeadCount = LeadCount + 1 WHERE employeeID = NEW.employeeID;
END
CREATE TRIGGER leadIns AFTER UPDATE ON Leads
FOR EACH ROW BEGIN
UPDATE Employees SET LeadCount = LeadCount - 1 WHERE employeeID = OLD.employeeID;
UPDATE Employees SET LeadCount = LeadCount + 1 WHERE employeeID = NEW.employeeID;
END
CREATE TRIGGER leadIns AFTER DELETE ON Leads
FOR EACH ROW BEGIN
UPDATE Employees SET LeadCount = LeadCount - 1 WHERE employeeID = OLD.employeeID;
END
Другой вариант, если вы используете MySQL, это использовать синтаксис UPDATE для нескольких таблиц. Это расширение MySQL для SQL, оно не переносимо на другие марки RDBMS. Сначала сбросьте LeadCount во всех строках на ноль, затем выполните объединение с таблицей Leads и увеличьте LeadCount в каждой строке, созданной объединением.
UPDATE Employees SET LeadCount = 0;
UPDATE Employees AS e JOIN Leads AS l USING (employeeID)
SET e.LeadCount = e.LeadCount+1;