У меня есть две таблицы, Table_A и Table_B. Table_A имеет отношение «один ко многим» с Table_B.
После вставки записи в дочернюю таблицу (Table_B) я хочу использовать триггер, чтобы получить значение из поля в родительской таблице (Table_A) и обновить текущую вставленную запись в Table_B.
Table_A
PK|EmpID|MemID|Firstname|Lastname
----------------------------------
1 |1234 |AB123|John | Doe
2 |5678 |CD456|Jane | Smith
Table_B
PK|EmpID|MemID|Description
---------------------
1 |1234 |NULL |Finance
2 |1234 |NULL |IT
3 |5678 |NULL |Finance
4 |5678 |NULL |Management
Триггер должен получить значение MemID из Table_A и обновить его соответствующее значение в Table_B, где [Table_A]. [EmpID] = [Table_B]. [EmpID]. Конечно, после 4 вставок в Table_B результаты должны быть следующими:
PK|EmpID|MemID|Description
---------------------
1 |1234 |AB123|Finance
2 |1234 |AB123|IT
3 |5678 |CD456|Finance
4 |5678 |CD456|Management
Я тщательно искал другие технические сайты, но, похоже, не нашел ни одного с этим конкретным сценарием. В качестве отчаянного шага я зарегистрировался на этом сайте, и это будет мой первый пост о помощи.
Ниже приводится моя тщетная попытка создать свой первый триггер в MS SQL Server 2008 R2.
CREATE TRIGGER dbo.trgInsMemID
ON dbo.Table_B
AFTER INSERT
AS
BEGIN
UPDATE dbo.Table_B
SET MemID =
(SELECT MemID
FROM inserted i
JOIN dbo.Table_A c ON c.EmpID = i.EmpID)
FROM dbo.Table_B b
JOIN inserted i ON i.MemID = b.MemID
END