如何编写一个触发器来堆叠sql中两个不同表中的两列

时间:2016-02-23 12:27:29

标签: sql triggers

我们有三张桌子:

1. CourseRequest包含字段Request_idExecutionStartingDateExecutionEndDate

2. Courselist包含字段list_idRequest_idPlanning_id

3. CoursePlanning包含字段Planning_IdCourseLength

表结构图:

enter image description here

我希望每次插入的数据都将从ExecutionStartingDate + length计算ExecutionEndDate,并认为数据类型分别是datatime2和int,并且触发器。

1 个答案:

答案 0 :(得分:0)

基本上你需要做以下事情:

  1. 为插入
  2. 创建触发器
  3. 根据需要计算并更新executionEndDate字段 - 对于更新,您需要连接所有3个表以查找相关的映射。
  4. 类似下面的查询:

    CREATE TRIGGER TRG_CourseRequest ON dbo.CourseRequest --Create insert trigger for table
    FOR INSERT AS
    BEGIN
    
        --Get the newly inserted CourseRequest ID
        DECLARE @COURSE_REQ_ID INT
        SET @COURSE_REQ_ID = (SELECT Request_id FROM INSERTED)T
    
        UPDATE  CR --Update the details
        SET     CR = DATEADD(CR.EXECUTIONSTARTINGDATE,CP.LENGTH)
        FROM    CourseRequest CR
                INNER JOIN COURSELIST CL
                ON CR.REQUEST_ID = CL.REQUEST_ID
                INNER JOIN COURSEPLANNING CP
                ON CP.PLANNING_ID = CL.PLANNING_ID
        WHERE
                CR.REQUEST_ID = @COURSE_REQ_ID
    
    END
    

    我没有在SQL服务器中编译它,因此可能存在一些语法错误!