У меня есть две таблицы. Один содержит список сотрудников и их информацию
EmployeeID | Name | Start Date |HoursCF | HoursTaken
------------+-------+-------------+--------+------------
1 | Conor | 15/10/2018 | 0 |0
2 | Joe | 01/05/2018 | 0 |0
3 | Tom | 01/01/2019 | 0 |0
Другой содержит запрос на отпуск, введенный сотрудниками
EmployeeID | HoursTaken |
------------+----------------+
1 | 8 |
2 | 16 |
3 | 8 |
2 | 8 |
1 | 16 |
Я хочу, чтобы при создании, удалении или обновлении нового запроса на праздничные дни в моей таблице запросов на праздничные дни он обновлялся на моей таблице сотрудников, например
EmployeeID | Name | Start Date |HoursCF | HoursTaken
-----------+-------+-------------+--------+------------
1 | Conor | 15/10/2018 | 0 |24
2 | Joe | 01/05/2018 | 0 |24
3 | Tom |01/01/2019 | 0 |8
Я пытался создать представление
CREATE VIEW vw_HoursTakenPerEmployee AS
SELECT e.[EmployeeID],
COALESCE(SUM(hr.[HoursTaken]), 0) AS HoursTaken
FROM [dbo].[Employees] e LEFT JOIN
[dbo].[HolidayRequests] hr
ON e.[EmployeeID] = hr.[EmployeeID]
GROUP BY e.[EmployeeID];
Затем с помощью триггера вставьте новые данные, введенные в таблицу запроса на отпуск, в таблицу сотрудников
ALTER trigger Inserttrigger on [dbo].[HolidayRequestForm]
after INSERT, UPDATE, DELETE
as
begin
TRUNCATE TABLE [dbo].[HoursTakenPerEmployee]
INSERT INTO [dbo].[HoursTakenPerEmployee] ([EmployeeID],[HoursTaken])
SELECT * FROM vw_HoursTakenPerEmployee;
end
Я знаю, что проблема в том, что оператор усечения работает нормально, если у всех сотрудников уже есть запись в таблице запросов на праздничные дни. Если они этого не делают, они усекаются из таблицы сотрудников в любое время, когда делается новый праздничный запрос, который не принадлежит им.
Есть мысли?