源表中的列更新后的SQL Server合并语句

时间:2019-07-24 09:43:03

标签: sql-server merge

我正在尝试在两个表上使用合并语句。 CourseEmployeeCourseStatus。更新列Course.Rev时,我希望将具有新修订版本的新行插入EmployeeCourseStatus表中。

EmployeeCourseStatus是用于跟踪员工在不同课程上的进度的表。它是通过具有列EmployeeIDCourseID的复合键设置的。

Course包含有关课程的所有信息,例如CourseNameValidForRev

我想在每次课程更新时添加一个新行,这样我可以保留所有员工的课程历史记录,而不必在课程更新到新修订版时将员工重新分配给每个课程

因此,我尝试使用合并语句,但是在使用复合键时遇到了麻烦。然后,我打算在Course表上使用更新触发器

MERGE [dbo].[EmployeeCourseStatus] as ECS
USING [dbo].[Course]  AS C
ON ECS.[CourseID] = C.[CourseID] AND
ECS.Rev = C.Rev
WHEN NOT MATCHED THEN
   INSERT([EmployeeID],[CourseID],[Status],[CompletionDate],[ValidFor],[Rev]) 
   VALUES(
   (SELECT EmployeeID FROM [dbo].[EmployeeCourseStatus] ),
   [CourseID],
   null,
   null,
   [ValidFor],
   [Rev]);

我希望通过EmployeeCourseStatus更新Course时,此merge语句的结果将新行插入Course.Rev中。

0 个答案:

没有答案