c# - 如何检测触发器何时触发?
问题描述
我有一个项目,我必须在购买产品时向我的客户发送电子邮件。我一直在与其他开发人员交谈,我们得出的结论是完成这个项目有 3 个主要步骤:
- 创建一个触发器,当数据插入到 sales 表时触发;
- 当触发此触发器时,创建一个 Windows 服务来“监视”;
- 用于发送电子邮件的 WinForms 应用程序。
我知道如何通过 WinForms 应用程序发送电子邮件,所以第 3 步就可以了。我阅读了 Service Broker 并在我的数据库上启用了它。此外,我创建了触发器,以便在插入或更新数据时通过 Service Broker 发送消息。我按照本教程提出了这个触发器:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER SendServiceBroker
ON dbo.Sales
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ch UNIQUEIDENTIFIER
DECLARE @msg NVARCHAR(MAX) ;
BEGIN DIALOG CONVERSATION @ch
FROM SERVICE [InitiatorService]
TO SERVICE 'TargetService'
ON CONTRACT [http://ssb.csharp.at/HelloWorldContract]
WITH ENCRYPTION = OFF ;
SET @msg = '<HelloWorldRequest>
Gabriela
</HelloWorldRequest>' ;
SEND ON CONVERSATION @ch
MESSAGE TYPE [http://ssb.csharp.at/RequestMessage]
(@msg) ;
END
GO
另外,我在 Microsoft 的 GitHub 页面中找到了Windows 服务项目的代码。我在我的计算机中安装了该服务,然后在 Sales 表中插入了一些数据,但没有任何反应。我想过直接在触发器上发送电子邮件(使用sp_send_dbmail
),但我没有这样做的必要权限。我认为在整个过程中我缺少一些东西来使其正常工作,但我不知道我必须做什么才能使其正常工作。
解决方案
推荐阅读
- javascript - 在 CircleCI 上的 Nightwatch 测试期间选择要上传的文件(图像)
- javascript - x Time 后一个接一个地运行 JavaScript 函数
- python - TensorFlow批量归一化,维度错误
- python - TensorFlow 通过数组索引将张量分配给张量
- google-sheets-api - 如何使用 Google Sheets API 添加超链接?
- node.js - 即使设置了 ACL,也无法公开共享文件对象
- c++ - 来自输入文件的 Qt 串行端口通信;奇怪的行为
- c - 位运算符错误输出
- c# - 如果数量 <= 0,则将缺货消息传递给查看
- c# - 在 ASP.NET Core 中路由静态文件