テーブルにトリガーがあります。これは非常に簡単なトリガーで、挿入後に設定すると、私に電子メールを送信します。私はそのトリガーをオンにして以来、5〜6分ごとにシステムから電子メールが送られてきました。ただ1つの問題があります。私は電子メールを受信するたびに は、テーブルには、ここで SQL Serverのトリガーが原因不明です。
はちょうどチェックし、私の私は手動で行を挿入しようとしたUSE [didaprod]
GO
/****** Object: Trigger [dbo].[Caseplayer_CaseId_Restore_insert_mail] Script Date: 09-08-2016 11:59:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE trigger [dbo].[Caseplayer_CaseId_Restore_insert_mail] on [dbo].[Caseplayer_CaseId_Restore]
AFTER INSERT
as
SET NOCOUNT ON
declare @tekst nvarchar(500);
set @tekst = 'caseid sat til null på caseplayer! Tjek Caseplayer_CaseId_Restore tabel!' + convert(varchar,getdate(),105);
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mail',
@recipients = '[email protected]',
@subject = 'CASEID SAT TIL NULL!!!',
@body = @tekst
SET NOCOUNT OFF
GO
トリガー、またはテーブル内の行のカップルでEMPTYですまた、適切な挿入物がある場合は、トリガーも発火します。しかし、なぜ私は電子メールを受け続けているのか説明できません!テーブルそのものは、何も気にしない。
USE [didaprod]
GO
/****** Object: Table [dbo].[Caseplayer_CaseId_Restore] Script Date: 09-08-2016 12:04:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Caseplayer_CaseId_Restore](
[Id] [int] NOT NULL,
[CaseId] [int] NOT NULL,
[TimeOfChange] [datetime] NOT NULL
) ON [PRIMARY]
GO
私は今トリガを無効にし、電子メールが停止したことを確認しました。しかし、これは私にとってはほとんど魔法のようなものです。私は答えを得たいと思っています。
は私が
delete from [Caseplayer_CaseId_Restore]
を行うと、ちょうど一人でテーブルを残しているとします。 私はまだシステムから、テーブルを確認するように電子メールを受け取ります。私はその後、
select * from [Caseplayer_CaseId_Restore]
を実行すると、テーブルは空
が他ののSPで処理され、このテーブルのですか?他の機能がこのテーブルの行をチェックして処理し、最終的にそれらを削除する可能性はありますか? –
完全に新しいテーブルです。特定の基準が満たされるたびに、「復元」テーブルに行を挿入する「CasePlayers」と呼ばれる別のテーブルでトリガーが発生していることを除いて、何もそれと対話しません。これは私がテストし、期待どおりに実行します。この全部のことは、私たちが持っているレガシーシステムのせいで、たまに自殺しようとしていて、毎回caseplayersテーブルの特定のフィールドをリセットしています。ケースプレイヤーの私のトリガーは、私の復元テーブルに復元を実行するために必要なものを挿入するだけなので、バックアップに頼る必要はありませんが、代わりに簡単なステートメントを作成することができます。 –