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

Откуда:
Сообщений: 16
Здравствуйте!

Прошу разъяснить такой вопрос. Есть таблица "Товары", в которой для каждого товара указывается цена.
На основе таблицы "Клиенты" и "Товары" создается таблица "Накладная", в которую списком заносятся заказы (товары) клиента.

Теперь сам вопрос. Если я меняю у какого-то товара цену в таблице "Товары", то затронет ли данное изменение накладные, созданные ранее? То есть пересчитаются ли в них цены на товары?

Если это так, то каким образом запретить изменение цены в накладных, созданных до изменения цены товара?

В свойства ссылочной целостности таблицы "Товары" установлено PARENT UPDATE NO ACTION. Но как я понимаю, это лишь запрет на изменение первичного ключа, а не значений, верно?
17 сен 16, 23:10    [19678057]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на пересчет значений  [new]
iljy
Member

Откуда:
Сообщений: 8711
don_zaresh,

сервер не будет по собственной инициативе ничего делать, чтобы что-то где-то поменялось, должна быть выполнена соответствующая команда (явно или неявно, случаи неявной модификации нужно явно создавать, типа внешних ключей, вычисляемых полей, материализованных представлений и т.д.).
17 сен 16, 23:16    [19678070]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на пересчет значений  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Цены должны копироваться из таблицы Товары в таблицу Накладная. А по установленной связи будут браться только поля, не связанные с ценой (и другими характеристиками, которые являются атрибутами экземпляра товара, а не его типа).
17 сен 16, 23:18    [19678074]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на пересчет значений  [new]
don_zaresh
Member

Откуда:
Сообщений: 16
Akina, правильно ли я вас понял:

1) Пусть товар c кодом=1 имеет цену 20 руб. На форме разрабатываемого приложения через, например, через поле Edit я указываю код данного товара, чтобы включить его в накладную.

Тогда накладная будет иметь, например, такой вид:
Код накладной
Код товара
Кол-во товара
Цена товара (20 руб.)


2) В один прекрасный момент я решил поменять цену товара с кодом=1 на 25 руб. Тогда:
- в предыдущих накладных цена товара с кодом 1 останется прежней, то есть 20 руб.
- в новых накладных по той же схеме будет уже заноситься цена 25 руб.
17 сен 16, 23:25    [19678091]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на пересчет значений  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Угу.
18 сен 16, 00:02    [19678249]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на пересчет значений  [new]
don_zaresh
Member

Откуда:
Сообщений: 16
Akina, спасибо!
18 сен 16, 00:03    [19678252]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить