Sql server 如果表中的字段减少,则在SQL中创建警报(序号控制表)

Sql server 如果表中的字段减少,则在SQL中创建警报(序号控制表),sql-server,triggers,alert,Sql Server,Triggers,Alert,我有一个表,我们在其中存储我们的工作和发票序列号。 本周早些时候,其中一个序列号从100000多个重置为1 我想创建某种警报,在序列号随时减少时通知我,以便我能够及时主动解决问题 表如下所示: Comp_id-这将始终是相同的,例如Comp Seq_type-序列名称,即发票 u_版本-始终 序号-创建新发票时递增的序列号 Seq_desc-Seq_类型的定义 SP_str1-空 SP_num1-空 当SEQ_TYPE随时降低其值时,我需要警报通知我 我愿意接受任何建议。我会使用触发器触发警报:

我有一个表,我们在其中存储我们的工作和发票序列号。 本周早些时候,其中一个序列号从100000多个重置为1

我想创建某种警报,在序列号随时减少时通知我,以便我能够及时主动解决问题

表如下所示:

Comp_id-这将始终是相同的,例如Comp

Seq_type-序列名称,即发票

u_版本-始终

序号-创建新发票时递增的序列号

Seq_desc-Seq_类型的定义

SP_str1-空

SP_num1-空

当SEQ_TYPE随时降低其值时,我需要警报通知我


我愿意接受任何建议。

我会使用触发器触发警报:

Create trigger trg_u_Sequence on [Sequence]
for update
as 
begin
select [existing].Seq_type as OLDSeq_type, [existing].Seq_no as OLDSeq_no, [new].Seq_type as NEWSeq_type, [new].Seq_no as NEWSeq_no
into #temp
from inserted [new]
inner join deleted [existing]
    on [new].seq_type = [existing].seq_type
where [new].Seq_no <= [existing].seq_type
if @@ROWCOUNT > 0
    begin
    --Alert using sp_send_dbmail or write to a table with the contents of #temp
    end
end

如果出现此类重置不正常,则可以添加而不是插入/更新触发器,以防止更改并引发错误。然后,如果有人或有人试图编辑该列,则会出现错误。为了清楚起见,该表是一个参考表,因此不会添加任何行,只会添加序号。创建新发票时,序号不会更新,然后序号从100变为101…您仍然会使用插入吗?还是有更新触发器?@ryall579根据您的解释,我已更改为更新触发器。如果一个seq_类型有一个seq_no go down,它将被记录。我曾尝试使用您给我的代码,但这只是在尝试更新表时出错。也许能让你更好地了解我需要什么。例如,在此序列表上,如果SEQ_no的值已减少,我希望能够向我发送警报,但允许更新继续,因为使用此表的应用程序错误处理得不太好。@ryall579是否用警报替换注释代码“-alert using sp_send_dbmail”或write to a t”?你有数据库邮件设置吗?您希望如何发出警报?可以将其写入表日志。