powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с триггером
6 сообщений из 6, страница 1 из 1
Помогите с триггером
    #39795207
yuri7811
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть две таблицы.
В первую Events постоянно записываются строки (ID,Дата, станция, код).

IDDateTimeComplectID_StationCode12562019-04-02 14:14:04.6037550000 12552019-04-02 14:14:04.10076 5000 12542019-04-02 14:14:02.81372 30000 12532019-04-02 14:14:01.55375 40000 12522019-04-02 14:14:00.64176 3000

Вторая Station_Status содержит сводную таблицу с параметрами по каждой станции.

Station_IDStatus_FromMachine_Auto702713724732741752762.....

После прихода новой строки в первую таблицу должна обновится соответствующая ячейка во второй таблице.

Написал триггер
Код: 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.
ALTER TRIGGER [dbo].[TestTriger]
    ON [dbo].[Events]
    for INSERT
    AS
    BEGIN

	DECLARE @Station int; 
	DECLARE @Code int;

 SET @Station =  (SELECT TOP 1  ID_Station FROM Events  order by ID DESC);  
 SET @Code = (SELECT TOP 1  Code FROM Events WHERE ID_Station= @Station order by ID DESC);


    IF (@Code = 20000 or @Code = 0 or @Code = 2000) 
		UPDATE Station_Status SET Status_FromMachine_Auto = 1 WHERE Station_ID = @Station;
    IF (@Code = 50000 or @Code = 1 or @Code = 5000)  
		UPDATE Station_Status SET Status_FromMachine_Auto = 2 WHERE Station_ID = @Station;
    IF (@Code = 40000 or @Code = 2 or @Code = 4000)  
		UPDATE Station_Status SET Status_FromMachine_Auto = 3 WHERE Station_ID = @Station;
	IF ((30000 <= @Code AND @Code  <= 39000) or @Code = 4 or @Code = 3000) 
		UPDATE Station_Status SET Status_FromMachine_Auto = 4 WHERE Station_ID = @Station;
    IF (@Code = 70000 or @Code = 70001 or @Code = 7000 ) 
		UPDATE Station_Status SET Status_FromMachine_Auto = 7 WHERE Station_ID = @Station;

    END



Но он почему то работает не стабильно , некоторые приходящие в первую таблицу строки, не обрабатываются. Хотя в первой таблице присутствуют.

Подскажите, в чем проблема.
...
Рейтинг: 0 / 0
Помогите с триггером
    #39795210
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuri7811Но он почему то работает не стабильно ,
Потому что так написан.

Читать про inserted.
...
Рейтинг: 0 / 0
Помогите с триггером
    #39795217
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuri7811Написал триггерВы посмотрите хелп, посмотрите в нём пример написания триггера. У вас просто бред написан, так нельзя делать.
...
Рейтинг: 0 / 0
Помогите с триггером
    #39795218
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ALTER TRIGGER [dbo].[TestTriger]
    ON [dbo].[Events]
    for INSERT
    AS
    BEGIN

set nocount on

update a set
    a.Station_Status = case
        when (b.code = 20000 or b.code = 0 or b.code = 2000)                           then 1
        when (b.code = 50000 or b.code = 1 or b.code = 5000)                           then 2
        when (b.code = 40000 or b.code = 2 or b.code = 4000)                           then 3
        when ((30000 <= b.code AND b.code  <= 39000) or b.code = 4 or b.code = 3000)   then 4
        when (b.code = 70000 or b.code = 70001 or b.code = 7000 )                      then 7
    end
from        Station_Status  a
inner join  inserted        b on b.Station_ID = a.ID_Station

end



UPD: хотя тут еще поди и группировка/выбор последнего ивента по станции нужно.
...
Рейтинг: 0 / 0
Помогите с триггером
    #39795276
Сруль.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если в первой таблице кто-то апдейтом поменяет
код станции 75, скажем, на 73.
У вас апдэйт триггер есть в натуре?
Без него двойник во второй таблице не появится.
...
Рейтинг: 0 / 0
Помогите с триггером
    #39795491
yuri7811
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, большое спасибо за помощь , разобрался все работает.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с триггером
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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