С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 04.01.2019
Сообщений: 59

Триггер after update

20.01.2020, 19:52. Показов 8080. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Есть 2 таблицы
1) Содержит информацию о заказе


2) Содержит информацию о плане выполнения заказа:


Мне нужно реализовать следующее:
Если в столбе STNAIM будет статус "выполнен", у всех этапов конкретного заказа(ZNUM), то статус в строке, с таким же номером заказа в 1 гриде изменить на "выполнен" или "готов".

Я правильно понимаю, что это нужно реализовывать через триггер after update?
Не могли бы вы мне помочь с написанием такого триггера
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2020, 19:52
Ответы с готовыми решениями:

Нужен триггер на update
Подскажите. Нужен trigger на update. Чтобы при обновлении записи вызывался триггер, и в поле update_date записывался getdate.now

Триггер Insert, Update
Помогите написать триггер на запрет добавления существующего клиента в таблицу. Таблица состоит из фамилии и номера телефона

Триггер For Update работает странно
Привет всем! Вопрос: в триггере FOR UPDATE прекрасно работал след. кусок: DECLARE @CurrID INTEGER SELECT @CurrID =...

5
0 / 0 / 0
Регистрация: 04.01.2019
Сообщений: 59
20.01.2020, 20:32  [ТС]
T-SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER Update_stzak 
ON Заказы
AFTER UPDATE 
AS
IF EXISTS(SELECT План.STNAIM FROM План, Заказы where План.STNAIM = 'Выполнен') 
BEGIN 
Update Заказы set ZSTAT = 'Готов'
JOIN План
ON План.ZNUM = Заказы.ZNUM
Where План.STNAIM = 'Выполнен'
END
не уверен, что правильно составил запрос.
Плюс ошибка идет
Неправильный синтаксис около ключевого слова "JOIN".
0
0 / 0 / 0
Регистрация: 04.01.2019
Сообщений: 59
20.01.2020, 21:27  [ТС]

у каждого этапа конкретного заказа*


И, 'подхватывая' номер заказа (если статусы этапов "выполнен" у 1 заказа в таблице План) меняем в таблице Заказ, в строке с заказом 1 поле "ZSTAT" на "готов".
0
0 / 0 / 0
Регистрация: 04.01.2019
Сообщений: 59
20.01.2020, 21:58  [ТС]
T-SQL
1
2
3
4
5
6
7
8
9
10
11
ALTER TRIGGER [dbo].[Update_stzak] 
ON [dbo].[План]
AFTER UPDATE 
AS
IF EXISTS(SELECT inserted.STNAIM FROM inserted where inserted.STNAIM = 'Выполнен') 
BEGIN 
Update Заказы set ZSTAT = 'Готов' from Заказы
JOIN inserted 
ON inserted.STNAIM = 'Выполнен' 
Where inserted.ZNUM = Заказы.ZNUM
END
Вот с таким запросом он обновляет таблицу "заказы" как только хотя бы в 1 из этапов появляется статус "выполнен"

Но мне нужно, чтобы он не обновлял, пока все этапы не приобретут значение "выполнен".
В чем ошибка?
0
8 / 5 / 3
Регистрация: 19.01.2015
Сообщений: 88
20.01.2020, 23:03
Лучший ответ Сообщение было отмечено ookullme как решение

Решение

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ALTER TRIGGER [dbo].[tr_update_stzak] 
ON [dbo].[План]
AFTER UPDATE 
AS
BEGIN
    update f
    set f.ZSTAT = 'Готов'
    from [dbo].[Заказы] f
    JOIN inserted ins ON ins.ZNUM = f.ZNUM
    WHERE NOT EXISTS
        (
           SELECT 1
           FROM [dbo].[План] pl
           JOIN inserted ins ON ins.ZNUM = pl.ZNUM AND pl.STNAIM <> 'Выполнен'
        )
END
Попробуй так. Надеюсь, кроме меня тебе еще кто нибудь подскажет, потому что в себе я не очень уверен.
Есть совет: создай отдельный справочник статусов этапов выполнения и вместо слов "выполнено", "в разработке" пиши соответствующий идентификатор. Так будет намного удобнее с точки зрения оптимизации и нормализации данных.
1
0 / 0 / 0
Регистрация: 04.01.2019
Сообщений: 59
20.01.2020, 23:38  [ТС]
Цитата Сообщение от kEkCJkee Посмотреть сообщение
Попробуй так. Надеюсь, кроме меня тебе еще кто нибудь подскажет, потому что в себе я не очень уверен.
Есть совет: создай отдельный справочник статусов этапов выполнения и вместо слов "выполнено", "в разработке" пиши соответствующий идентификатор. Так будет намного удобнее с точки зрения оптимизации и нормализации данных.
Спасибо большое, вроде работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2020, 23:38
Помогаю со студенческими работами здесь

Триггер after update, удалить обновленную запись, если количество 0
Привет. Нужно сделать триггер после update (или вместо update и как-то merge юзать, например) проверял поле записи...

Контроль UPDATE триггер. Доступ к данным, которые в запросе
При обновлении некоторых данных требуется отдельное подтверждение. То есть при одинаковом запросе надо или обновить данные или...

Триггер с after update не работает, а с for update работает
Не могу понять, почему так происходит? В нэте пишут, что after/for это the same . Но все же. В начале прописал AFTER UPDATE и этот триггер...

Триггер на update
Добрый вечер. Имеются 2 таблицы, допустим TEST_TABLE_1(number, balance) и TEST_TABLE_2(number, datetime, value, different). Не...

Триггер на Insert/Update
Вечер добрый. Создал триггер, который на Insert должен проверять есть-ли запись с некоторыми данными, если уже есть , то выдать ошибку. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru