我正在尝试在两个表上使用合并语句。 Course
和EmployeeCourseStatus
。更新列Course.Rev
时,我希望将具有新修订版本的新行插入EmployeeCourseStatus
表中。
EmployeeCourseStatus
是用于跟踪员工在不同课程上的进度的表。它是通过具有列EmployeeID
和CourseID
的复合键设置的。
Course
包含有关课程的所有信息,例如CourseName
,ValidFor
和Rev
。
我想在每次课程更新时添加一个新行,这样我可以保留所有员工的课程历史记录,而不必在课程更新到新修订版时将员工重新分配给每个课程
因此,我尝试使用合并语句,但是在使用复合键时遇到了麻烦。然后,我打算在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
中。