You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server:修复Appointment表插入触发器以更新Patient表LastContactDate

修正Appointment表的AFTER INSERT触发器代码

你的原触发器代码存在几个关键问题,直接修正如下:

原代码的问题点

  • 误用了INSERT INTO语句,实际需要的是更新Patient表的操作,应该用UPDATE
  • 关联逻辑错误:触发器触发时,需通过新增预约记录的患者标识关联Patient表,而非关联Appointment自身
  • 目标表错误:要更新的是Patient表,不是Appointment表

修正后的完整代码

CREATE TRIGGER tr_Appointment_AfterInsert
ON Appointment
AFTER INSERT
AS
BEGIN
    -- 关闭额外的影响行数消息(可选,优化执行体验)
    SET NOCOUNT ON;

    -- 更新对应患者的LastContactDate为当前日期
    UPDATE p
    SET p.LastContactDate = GETDATE()
    FROM Patient p
    -- 通过Inserted表(存储新增预约记录)关联到目标患者
    INNER JOIN Inserted i
        ON p.PatientID = i.PatientID;
END

说明

  • Inserted是SQL Server触发器的特殊系统表,存储了本次插入操作新增的所有记录
  • 假设Appointment表和Patient表通过PatientID字段关联,如果你的实际关联字段不同,替换成对应字段名即可
  • SET NOCOUNT ON用于避免触发器执行时返回额外的影响行数提示,不影响核心功能但更整洁

内容的提问来源于stack exchange,提问作者robert404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:15:54