Как я могу написать триггер обновления для обновления текущей таблицы на основе значения в другой таблице в SQL Server 2008?

У меня есть две таблицы, 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
5
задан Bert 26 November 2011 в 04:40
поделиться