|
207 / 23 / 6
Регистрация: 12.06.2012
Сообщений: 235
|
|||||||||||||||||||||
Ребят, подскажите как сделать триггер?17.03.2017, 10:59. Показов 4031. Ответов 24
Необходим триггер для SQL server.
Суть вопроса: Есть таблица Workflow с полями PID(int not Null), SID(int not Null), Country(nvarchar 255), Date(datetime). PID и SID это уникальный ключ. Присутствуют такие данные: 3426, 85, Poland, '2017-03-02'В этой таблице записи постоянно удаляются, обновляются и вставляются новые. Если запись удаляется (DELETE), или, изменяется поле Country (UPDATE), то надо, чтобы в таблицу History попадала запись. Но перед этим сверялось по трём полям (PID, SID, Country) нет ли там уже такой схожей записи, чтобы не плодить дубликат. Пример 1: Удаляем записи из таблицы Workflow скриптом:
По второму Delete аналогично проверяем. Пример 2: Обновляем записи в таблице Workflow скриптом:
П.С. Сравнение по полю Country надо производить без учета регистра, т.е. 'poland' = 'Poland' = 'POLAND'. Интересует, куда надо вносить скрипт, я так понимаю в раздел Triggers. Ну и сам T-SQL синтаксис верный, потому что я набросал от руки, явно не правильный.
0
|
|||||||||||||||||||||
| 17.03.2017, 10:59 | |
|
Ответы с готовыми решениями:
24
Ребят дайте свой мудрый совет . Подскажите что можно сделать? Жить ему или нет? Ребят, подскажите как фиксится ошибка |
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
||||||
| 18.03.2017, 21:03 | ||||||
Сообщение было отмечено sergeos как решение
Решение
Во-первых, добавлю поле Action (упустил
)
Если написать DELETE [dbo].[Workflow] WHERE 2*2=5;, то ничего не удалится, но триггер вызовется! Что же, делать холостой INSERT нуля записей в [dbo].[WorkflowHistory]?? В-третьих, можете спросить, зачем я проверяю наличие записей в deleted, если можно, казалось бы, просто проверять @@ROWCOUNT на равенство 0? Отвечаю: если DELETE выполнится в инструкции MERGE, то в триггере на удаление @@ROWCOUNT совсем необязательно равно количеству удалённых записей. @@ROWCOUNT будет равен общему количеству записей, затронутых командой MERGE. А это может быть ещё и INSERT, и UPDATE.
1
|
||||||
|
207 / 23 / 6
Регистрация: 12.06.2012
Сообщений: 235
|
|||||||
| 18.03.2017, 21:32 [ТС] | |||||||
![]() да, конечно, важно видеть какие возможности SQL можно использовать, но и основую задачу сделать, чтобы видеть эволюцию стран за период. Пока что не красиво выглядит дубликация стран. Вот тот последний вопрос относится к сложным, то что я спрашивал как усложнить Exists, чтобы вставлять запись в History, только если последняя добавленная не такая же как добавляемая? Т.е., логически понимая, надо ещё делать такой запрос:
0
|
|||||||
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
||||||||||||||||||||||||||||||||||||||
| 19.03.2017, 03:42 | ||||||||||||||||||||||||||||||||||||||
|
Придется вернуться, т.к. триггер iap пытается добавить кучу мусора
тестовый скрипт. Выполнять построчно, иначе у операций может оказаться одинаковое GetDate() и будет неправильно определено последнее изменение. Поэтому лучше добавить автоинкрементное поле в HISTORY для одинакового определения последнеего изменения Кликните здесь для просмотра всего текста
delete from history
INSERT INTO dbo.Workflow(PID, SID, Country) SELECT 3426, 85, NULL UPDATE dbo.Workflow SET Country = 'pOland' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = 'Poland' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = ' Poland' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = 'Poland ' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Date = '20170102' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = 'Pakistan' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = ' ' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = 'Pakistan' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = ' ' WHERE PID = 3426 AND SID = 85 UPDATE dbo.Workflow SET Country = 'Pakistan' WHERE PID = 0 DELETE FROM dbo.Workflow WHERE PID = 3426 AND SID = 85 SELECT * FROM dbo.Workflow SELECT * FROM dbo.HISTORY у iap получим
у меня
1
|
||||||||||||||||||||||||||||||||||||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
||||||
| 19.03.2017, 12:41 | ||||||
1
|
||||||
|
207 / 23 / 6
Регистрация: 12.06.2012
Сообщений: 235
|
|
| 23.03.2017, 09:35 [ТС] | |
|
Только вот решил написать после тестинга.
ЛЮДИ А Г Р О М Н А Е СПАСИБО
0
|
|
| 23.03.2017, 09:35 | |
|
Ребят, подскажите как исправить ошибку... Ребят подскажите как вывести значение Ребят, подскажите, как отсеять лишнее Ребят, подскажите как написать скрипт?? ребят подскажите в формулой,как расписать ее правильно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|