sql-server - SQL Server:AFTER INSERT 触发器无法正常工作,即使确保在 SSIS 包中设置了 FIRE_TRIGGERS
问题描述
不确定为什么这不能正常工作。让我给出一些我想要发生的事情的背景。
我正在向表中插入大量行OpenCase
(大约 35 K)。该数据来自最近 3 个月。该Resolved Case
表已经是最新的并且是最新的。
一些未解决的案例已经得到解决,所以我希望它检查插入表中的每一行并检查它SUB_QUERY_ID
是否在Resolved Case
表中。如果是,我想用这种情况下的表中的日期更新RESOLVED_ON
表Open Case
中的SUB_QUERY_CLOSED_ON
日期Resolved Case
。
下面的一个例子:
从Resolved Case
表:
SUB_QUERY_ID SUB_QUERY_CLOSED_ON
----------------------------------
US12332-1 1/28/2019
从Open Case
表:
SUB_QUERY_ID RESOLVED_ON
-------------------------------------
US12332-1 (The trigger should get the SUB_QUERY_CLOSED_ON date from
the Resolved Cases Table and update it here)
从我看到的示例中,这应该可以工作,但是RESOLVED_ON
日期都是 NULL,即使我手动检查了一些Open Case
SUB_QUERY_ID
's 并看到它们在Resolved Case
表中。
ALTER TRIGGER [FindResolvedCaseDate]
ON [OpenCases]
AFTER INSERT, UPDATE
AS
BEGIN
IF @@ROWCOUNT = 0
RETURN
SET NOCOUNT ON;
DECLARE @SUB_QUERY_ID VARCHAR(150)
SELECT @SUB_QUERY_ID = SUB_QUERY_ID
FROM INSERTED
UPDATE OpenCases
SET RESOLVED_ON = (SELECT TOP 1 SUB_QUERY_CLOSED_ON
FROM ResolvedCases
WHERE SUB_QUERY_ID = @SUB_QUERY_ID
ORDER BY SUB_QUERY_CLOSED_ON DESC)
END
解决方案
推荐阅读
- python - 我的程序如何为不可用的值返回 none,例如某些电影没有 metascore
- node.js - react-scripts 启动错误代码 134,未启动应用程序
- flutter - 控制不会在颤动中进入循环
- r - 在R中的一个df中为多个文件的文件名添加日期
- syntax - SML 是否支持对匹配表达式中的模式进行保护?
- c++ - 使用 std::variant 而不是编译时错误在缺少函数重载时引发异常
- apache - 具有多个基于名称的虚拟主机的 2 个 Apache Web 服务器的负载平衡/高可用性
- python - 检查所有字典是否包含具有特定值的特定键
- go - 如何在 Go 中创建 HTTP 会话
- cmd - 有人可以解释一下为什么 cmd 的 'where' 找不到这个文件吗?