Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 522
Доброго времени...
Нормально ли иметь триггер в БД, если обновляется только одно поле с ценой (RUB) а уже триггер меняет цену у полей UAH и BYN согласно изменению в поле RUB?

Задачу я поставил такую:
a) Изменяю поле RUB
b) Триггер реагирует на изменение и "подправляет" поля UAH и BYN согласно курса. Курс пока не знаю как передавать буду, для начала жёстко забью.

Пример:
RUB; UAH; BYN;
100; 47; 3.37;

Или многие скажут, что это не серверное дело заниматься пересчётом и надо чтобы клиентская часть это пересчитывала?
10 апр 17, 13:42    [20384856]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
palladin600,

ну если вы уже храните в базе 3 поля с эквивалентами, то вариантов не так и много, хотя логичнее хранить номинал, а остальное отдавать согласно курсу на выбор
10 апр 17, 13:47    [20384887]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
palladin600
Нормально ли иметь триггер в БД, если обновляется только одно поле с ценой (RUB) а уже триггер меняет цену у полей UAH и BYN согласно изменению в поле RUB?
Непонятная постановка задачи.
UAH и BYN должны обновляться по какому курсу, текущему на момент изменения RUB?
Тогда да, правильно.
Но мне кажется такой бизнес-процесс подозрительным.
palladin600
Или многие скажут, что это не серверное дело заниматься пересчётом и надо чтобы клиентская часть это пересчитывала?
Точно не клиентская, это именно серверное дело.
Но можно RUB показывать справочно, по текущему курсу, можно по курсу на определённую дату, можно ещё как то, вариантов много.
При этом можно пересчитывать и записывать в таблицу, а можно просто считать в запросе.
10 апр 17, 14:38    [20385206]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
palladin600
Доброго времени...
Нормально ли иметь триггер в БД, если обновляется только одно поле с ценой (RUB) а уже триггер меняет цену у полей UAH и BYN согласно изменению в поле RUB?

Задачу я поставил такую:
a) Изменяю поле RUB
b) Триггер реагирует на изменение и "подправляет" поля UAH и BYN согласно курса. Курс пока не знаю как передавать буду, для начала жёстко забью.

Пример:
RUB; UAH; BYN;
100; 47; 3.37;

Или многие скажут, что это не серверное дело заниматься пересчётом и надо чтобы клиентская часть это пересчитывала?

заведи себе следующие поля:
1. "Сумма RUB"
2. Курс RUB/UAH
3. Курс RUB/BYN
4. Калькулируемое поле "сумма UAH" = "Сумма RUB" * Курс RUB/UAH
5. Калькулируемое поле "сумма BYN" = "Сумма RUB" * Курс RUB/BYN

И главное - НИКАКИХ ТРИГГЕРОВ
11 апр 17, 14:01    [20389357]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
hoolygan
Member

Откуда:
Сообщений: 14
[quot Ivan Durak

И главное - НИКАКИХ ТРИГГЕРОВ[/quot]
Ага, и никаких джобов - все делайте вручную :)
11 апр 17, 14:16    [20389428]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ivan Durak
palladin600
Доброго времени...
Нормально ли иметь триггер в БД, если обновляется только одно поле с ценой (RUB) а уже триггер меняет цену у полей UAH и BYN согласно изменению в поле RUB?

Задачу я поставил такую:
a) Изменяю поле RUB
b) Триггер реагирует на изменение и "подправляет" поля UAH и BYN согласно курса. Курс пока не знаю как передавать буду, для начала жёстко забью.

Пример:
RUB; UAH; BYN;
100; 47; 3.37;

Или многие скажут, что это не серверное дело заниматься пересчётом и надо чтобы клиентская часть это пересчитывала?

заведи себе следующие поля:
1. "Сумма RUB"
2. Курс RUB/UAH
3. Курс RUB/BYN
4. Калькулируемое поле "сумма UAH" = "Сумма RUB" * Курс RUB/UAH
5. Калькулируемое поле "сумма BYN" = "Сумма RUB" * Курс RUB/BYN

И главное - НИКАКИХ ТРИГГЕРОВ

а потом: дайте сумму по курсу на вчера, с клиентом договорились, а вы плащ одеваете и городо: сча проапдейтим! а все остальные пусть подождут.
11 апр 17, 14:17    [20389431]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
это компромис модели, когда нужно иметь а одном месте все суммы сразу.
Понятно, что не от хорошей жизни такое понадобилось.
Как оно в теории должно быть все знают.
11 апр 17, 14:19    [20389449]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ivan Durak,
автор
это компромис модели, когда нужно иметь а одном месте все суммы сразу.

представления... это что-то странное и непонятное
11 апр 17, 14:29    [20389519]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на поля цен UAH, BYN, после изменения поля RUB  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
Ivan Durak
это компромис модели, когда нужно иметь а одном месте все суммы сразу.
Понятно, что не от хорошей жизни такое понадобилось.
Как оно в теории должно быть все знают.

Брат, в том то и дело, что ТС не знает, как оно должно быть в теории, потому и городит "волшебный триггер", который ему нафиг не упал, но он об этом ещё не знает.

В теории курсов есть 3 варианта оценки:
1) текущий курс - зависит от даты, для всех одинаковый
2) курс на дату(покупки-продажи-оценки) - зависит от даты, для каждой строки свой
3) внешний независимый курс, определяется чем-то ещё

В любой из этих вариантов можно решить триггером, но есть и более удобные методы.
11 апр 17, 14:56    [20389675]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить