Устранение неполадок простого триггера SQL Server

Я использую SQL Server 2008 здесь. Я унаследовал старое веб-приложение, которое умирает и заменяется совершенно новым веб-приложением. Новый проект запущен и работает, но старый будет существовать в течение следующих полутора месяцев в течение переходного периода.

Вот проблема: действие необходимо предпринять, когда кто-то добавляет новую запись в таблицу в SQL Server с помощью этого приложения. Старый исходный код довольно хреновый (серьезно, без контроля версий до моего приезда), и я не могу позволить себе потратить время на то, чтобы что-то помешать, просто чтобы получить уведомление по электронной почте, используя старое приложение.

Моя мысль - использовать триггер SQL Server для отправки электронного письма ПОСЛЕ ВСТАВКИ. На самом деле это все, что я хочу: всякий раз, когда в таблицу вводится новая запись (и всегда одна, а не десятки), я хочу отправить себе и другому счастливчику электронное письмо. Я никогда не делал этого в SQL Server, но это кажется выполнимым.

Вот мой SQL-скрипт в его нынешнем виде:

CREATE TRIGGER NotificationMail 
ON OldJunk.[dbo].[JunkTable]
AFTER INSERT
AS
BEGIN
   EXEC msdb.dbo.sp_send_dbmail --QUESTION: I HAVE NO IDEA WHAT TO PUT HERE, WHAT FOLLOWS
                                -- IS JUST COPYPASTA FROM A FORUM
            @recipients = 'shubniggurath@email.com, someoneelse@email.com',
            @subject = 'Old Registration Request - New Record',
            @body = 'Somebody decided to register using the old system.'
END            
GO

Я получаю эту ошибку, когда пытаюсь выполнить этот оператор создания:

Невозможно создать триггер для "OldJunk.dbo.JunkTable", так как цель отсутствует в текущей базе данных.

Заранее спасибо за помощь.

1 ответ

Решение

Вы должны быть в OldJunk база данных (с помощью USE .... в SQL Server Management Studio), а затем создайте триггер, используя следующие операторы SQL:

USE OldJunk; 
GO 

CREATE TRIGGER NotificationMail ON [dbo].[JunkTable]
.....

Вы не можете использовать три части (database).(schema).(object) запись в определении триггера.

Если это не сработает - тогда у вас, вероятно, нет такой таблицы - есть опечатка? Или это действительно не стол?

Другие вопросы по тегам