Не уверен, почему это не работает должным образом. Позвольте мне дать некоторый контекст того, что я хочу, чтобы произошло.
Я вставляю большое количество строк в таблицу OpenCase
(около 35 K). Эти данные за последние 3 месяца. Таблица Resolved Case
уже актуальна и актуальна.
Некоторые открытые случаи с тех пор были разрешены, поэтому я хочу проверить каждую строку из вставленной таблицы и проверить, находится ли это SUB_QUERY_ID
в таблице Resolved Case
. Если это так, я хочу обновить дату RESOLVED_ON
в таблице Open Case
на дату SUB_QUERY_CLOSED_ON
в таблице Resolved Case
для этого случая.
Пример ниже:
Из Resolved Case
таблица:
SUB_QUERY_ID SUB_QUERY_CLOSED_ON
----------------------------------
US12332-1 1/28/2019
С Open Case
таблица:
SUB_QUERY_ID RESOLVED_ON
-------------------------------------
US12332-1 (The trigger should get the SUB_QUERY_CLOSED_ON date from
the Resolved Cases Table and update it here)
Из примера, который я видел, это должно работать, но все даты RESOLVED_ON
равны NULL, даже когда я вручную проверяю некоторые из Open Case
SUB_QUERY_ID
и вижу, что они в Resolved Case
таблица.
ALTER TRIGGER [FindResolvedCaseDate]
ON [OpenCases]
AFTER INSERT, UPDATE
AS
BEGIN
IF @@ROWCOUNT = 0
RETURN
SET NOCOUNT ON;
DECLARE @SUB_QUERY_ID VARCHAR(150)
SELECT @SUB_QUERY_ID = SUB_QUERY_ID
FROM INSERTED
UPDATE OpenCases
SET RESOLVED_ON = (SELECT TOP 1 SUB_QUERY_CLOSED_ON
FROM ResolvedCases
WHERE SUB_QUERY_ID = @SUB_QUERY_ID
ORDER BY SUB_QUERY_CLOSED_ON DESC)
END