2013-11-21 4 views
1

У меня есть база данных для ресторана. таблицу для элемента (itemid, itemname, price) и таблицу для заказов (orderid, itemid, количество, цена). У меня есть поле цены в таблице заказов только потому, что если цена в таблице элементов была изменена, то значение заказа, конечно, не должно быть изменено. Есть ли способ автоматизировать цену, которая будет установлена? я не могу показаться, чтобы сделать это:SQL-поле как результат запроса

CREATE TABLE ORDER(
    OrderID INT IDENTITY(1,1) PRIMARY KEY, 
    ItemID INT NOT NULL, 
    Quantity INT NOT NULL, 
    Price MONEY AS (SELECT Price FROM ITEM) 
    ); 
+0

Я бы просто посмотрел текущую цену, когда вы создаете новый заказ. В SQL нет чистого способа сделать это, кроме * возможно * триггера, который все еще некрасиво. –

+0

Заказы Yup - это, как правило, то, что вам нужно для денормализации, если вы используете реляционную базу данных. – phoebus

+0

хорошо, в моей процедуре добавления мне придется искать и назначать ее. нет простого выхода –

ответ

0

Если вы пишете только приложение (ы), который будет вставлять новые строки, а затем установить цену на в строке заказа при вставке.

В противном случае рассмотрим триггер, который будет выполняться всякий раз, когда строка будет вставлена ​​в эту таблицу кем угодно. Он может искать цену товара и устанавливать значение в заказе до того, как запись будет записана в базу данных.

+0

да, это то, что я сделаю, спасибо многому человеку –

Смежные вопросы