Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Цикл по удаленным или добавленным записям в триггере ? / 8 сообщений из 8, страница 1 из 1
15.03.2001, 18:02
    #32003078
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
Как лучше делать цикл по удаленным (добавленным) записям в триггере, если для каждой записис надо осуществить проверку статуса (разрешена такая опреция или нет) в одной таблице и затем пересчетать общую сумму и записать в другую?
...
Рейтинг: 0 / 0
15.03.2001, 18:14
    #32003080
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
Поконкретнее опишите задачу, а в триггерах лучше обходитьсябез циклов.
...
Рейтинг: 0 / 0
15.03.2001, 18:57
    #32003082
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
Простой пример :

Есть две таблицы : Одна содержит Счета: (номер, статус, основная сумма, налог, коммисия, дополнительная сумма, общаяя сумма и т.д.)
Вторая содержит дополнительный суммы (номер счета,Сумма ,обоснование и т.д.)
При добавлении новой записи (или сразу нескольких), тоже самое при удалении надо проверить статус счета (например если он уже напечатан и отправлен) то отменить изменения если нет то пересчитать дополнительную сумму по всем дополнительным расходам каждого из счетов которых коснулись изменения и записать эти данные в таблицу счетов, в поле дополнительные расходы ...
(Последнее не так важно т.к. в принципе можно не хранить дополнительную сумму для каждого счета, а вычислять ее во View но это тоже не очень удобно)
...
Рейтинг: 0 / 0
15.03.2001, 19:03
    #32003083
ArtP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
К сожалению в триггерах не обойтись без циклов так как существуют групповые операции по изменению данных, а триггер у MSSQL вызывается один раз

DECLARE Inst CURSOR FOR SELECT * FROM Deleted
OPEN Inst
FETCH NEXT FROM Inst INTO ... -- тут локальный переменные
WHILE @@FETCH_STATUS = 0
BEGIN
.... -- тут операции
FETCH NEXT FROM Inst INTO ... -- тут локальный переменные
END
CLOSE Inst
DEALLOCATE Inst
...
Рейтинг: 0 / 0
16.03.2001, 09:42
    #32003099
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
вот как раз для таких задач циклы и курсоры совсем не нужны
попробуйте работать не с каждой записью, а сразу с массивом данных - и всё получиться, и гораздо проще чем вам казалось
...
Рейтинг: 0 / 0
16.03.2001, 10:30
    #32003103
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
Можно какойто пример как без цикла организовать проверку для каждой записи, в принципе надо осуществить только две операции либо запретить изменения либо разрешить ...

Вопрос в догонку а в T-SQL вообще есть что то вроде FOR x=1 TO 10 ... вобщем цыкл повторяющися заданое чило раз ?
...
Рейтинг: 0 / 0
16.03.2001, 10:50
    #32003105
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
2 ArtP Бррррр..... аж страшно

2 Dennisl

create trigger ti_Суммы on Суммы for insert as
begin

delete from Суммы inner join Счета on Суммы.ID = Счета.ID where Счета.Статус = "Плохой"

update Счета set [че там нужно апдейтить] from Счета, Суммы, insertded where Счета.ID = Суммы.ID and Суммы.ID = inserted.ID

end

В запросах под ID я понимал PK, FK из вашего описания таблиц я не понял где там первичный и внешний ключи.
...
Рейтинг: 0 / 0
16.03.2001, 11:15
    #32003109
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл по удаленным или добавленным записям в триггере ?
Спасибо Genady ! я так и сделаю вероятно, с UPDATE тоже тогда надо востанавливать занчения из deleted ...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Цикл по удаленным или добавленным записям в триггере ? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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