powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / триггер на view
5 сообщений из 5, страница 1 из 1
триггер на view
    #39854216
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, добрый день.
В первый раз делал триггер.
Идея такая.
на сервере 1 есть view, которая селектит дату из таблицы источника.(у меня к таблице источнику доступа нет и не будет).
Как только новая дата обнаружилась во вьюхе триггер должен запустить ДЖОБ и залогировать эту дату в таблицу на нашем сервере и далее запустить процесс. В случае, если во вьюхе появится еще одна новая дата, то триггер должен остановить джоб и запустить его заного и так до бесконечности пока не перестанут появляться новые даты во вьюхе. Сделано это с целью согласованности данных в БД.

Написал код:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TRIGGER dbo.check_new_data_and_start_job 
   ON  dbo.vClosedDay_in_source  --вьюха, которая идентифицирует новую дату в источнике
   AFTER INSERT,UPDATE
AS 
BEGIN
	DECLARE @job_id UNIQUEIDENTIFIER --ID джоба, который нужно запускать, останавливать
	DECLARE @InDateTime datetime --новая дата во вьюхе
	DECLARE @DateInitial datetime --старая дата в таблице нашей, куда должна произойти запись новой
	DECLARE @Enabled int -- статус работы джоба 1-работает, 0 - не работает
		
		SET @job_id = (SELECT job_id FROM msdb.dbo.sysjobs
					   WHERE job_id = 'Load_fastclosing')		--определяем ID джоба по названию		   
		SELECT @InDateTime = (SELECT MAX(InDateTime) FROM ourserv.ourbase.dbo.vClosedDay_in_source)	 --определяем новую дату
		SELECT @DateInitial = (SELECT DateInitial FROM ourserv.ourbase.dbo.ClosedDayStatus_source) --определяем старую дату
		SELECT @Enabled = (SELECT enabled FROM msdb.dbo.sysjobs
						   WHERE [name] = 'FastClosing_onClosedDays') -- уточняем статус джоба 

	IF (@InDateTime > @DateInitial AND @Enabled = 1) --сравниваем дату вьюхи и таблицы
		EXEC msdb.dbo.sp_stop_job @job_id = @job_id --если джоб работает останавливаем

		EXEC msdb.dbo.sp_start_job @job_id = @job_id -- и перезапукаем.

	
END
GO


При попытке создать тригер выдает ошибку:

The object 'dbo.vClosedDay_in_source' does not exist or is invalid for this operation

Коллеги, как я понимаю дело во вьюхе.
Есть, конечно вариант создать процедуру, котрая заполняла бы новую таблицу свежими данными, а уже на эту таблицу делать триггер. Но как то во вьюхе то все таки можно осуществить процесс такого плана.
Заранее благодарен Вам за ответы.
...
Рейтинг: 0 / 0
триггер на view
    #39854220
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Памятка для отвечающих: автор рожает велосипеды с треугольными колесами и советы не слушает.

Хелп он тоже не признает, иначе бы знал, какие можно триггеры делать на представлении, а какие нет.
...
Рейтинг: 0 / 0
триггер на view
    #39854222
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,

авторКак только новая дата обнаружилась во вьюхе
это как она так умеет?
...
Рейтинг: 0 / 0
триггер на view
    #39854238
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,

вроде на прошлой неделе именно такая же темя пролетала.
...
Рейтинг: 0 / 0
триггер на view
    #39854557
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовdermama,

вроде на прошлой неделе именно такая же темя пролетала.

Юзер запустил скрипт еще раз, проверить, может в этот раз сработает
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / триггер на view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]