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

SQL Server触发器修改需求:为HiringEMP表实现conversation_date单次赋值

修改后的触发器示例

核心修复要点

  1. 替换原字符串截取的判断逻辑,改用提取状态数字的方式更可靠
  2. 添加conversation_date IS NULL条件,确保仅首次符合要求时赋值
  3. 兼容多行插入/更新场景,避免单行判断的局限性

完整触发器代码

CREATE TRIGGER trg_convodate
ON [dbo].[HiringEMP]
FOR INSERT, UPDATE 
AS
BEGIN
    SET NOCOUNT ON

    -- 更新符合条件且未设置过conversation_date的记录
    UPDATE he
    SET conversation_date = CURRENT_TIMESTAMP
    FROM [dbo].[HiringEMP] he
    JOIN inserted i ON he.id = i.id
    -- 提取HiringStage的数字部分并判断是否≥3
    WHERE TRY_CAST(LEFT(i.HiringStage, CHARINDEX('-', i.HiringStage) - 1) AS INT) >= 3
      -- 确保仅首次赋值
      AND he.conversation_date IS NULL
END

关键逻辑说明

  • 状态判断优化:通过CHARINDEX找到-的位置,截取前面的数字部分并转成整数,直接判断是否≥3,比字符串匹配更精准,避免状态文本变化导致的判断失效
  • 首次赋值控制:he.conversation_date IS NULL确保只有从未设置过日期的记录才会被更新,即使后续状态升级(比如从3到5)也不会覆盖已有的日期
  • 多行兼容:使用JOIN inserted替代原有的WHERE id IN (...),同时处理多条记录插入/更新的场景,避免原触发器单行查询的限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:01:01