Возможно ли умножение внутри "INSERT...VALUES"?

В данной таблице (Лот поставки) стоимость заказа напрямую зависит от количества и типа товара.

    CREATE TABLE Order_lot 
(
  ID_Order_Lot INT PRIMARY KEY,
  ID_Product INT FOREIGN KEY REFERENCES Product(ID_Product),
  Amount INT,
  Order_price Money,
  ID_Order INT FOREIGN KEY REFERENCES _Order(ID_Order)
);

Сейчас таблица заполняется по таким правилам (прайс заполняется нулями): введите сюда описание изображения

Возможно ли добавить функцию при первичном заполнении, что-то вроде:

INSERT...[x.a][x.b][x.c] VALUES (5, 10, x.a*x.b) 

или же необходимо создавать отдельный запрос/результирующую таблицу(select...where).


Ответы (1 шт):

Автор решения: Akina

Операндом в списке значений VALUES должно быть выражение, результатом которого является скалярное значение (требуемого типа). А что это за выражение - одиночный литерал, арифметическое выражение или даже подзапрос - абсолютно неважно.

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

Тем не менее требуемое - возможно. Следует использовать INSERT .. SET:

INSERT INTO x (a, b, c) 
SET a = 5, 
    b = 10, 
    с = a * b;

В такой форме INSERT можно в выражении ссылаться на значения полей вставляемой записи, если эти значения присвоены выше по тексту.

→ Ссылка