Я пытаюсь создать триггер в SQL Server. Я вставляю данные в базу данных через формы, которые я сделал в Access. Когда я создаю новую запись, которая вставлена в мою таблицу SALESDETAILS
, я хочу, чтобы она вычитала quantity
(столбец), который был только что введен с моего In Stock
(столбец) в моей таблице PRODUCT
. SALESDETAILS
содержит FK от таблицы PRODUCT
(Product_ID
).Создание триггера для обновления другой таблицы в SQL Server
Это то, что я придумал, SQL Server создал триггер, но теперь он не позволяет вставлять вставки. После того, как я попытаюсь что-то вставить, он говорит, что PRODUCT.[In Stock]
не разрешает NULLS. [In Stock]
имеет ограничение, которое не допускает NULLS.
CREATE TRIGGER [Update_Stock]
ON SALESDETAILS
FOR INSERT
AS
BEGIN
UPDATE PRODUCT
SET PRODUCT.[In Stock] = (SELECT SALESDETAILS.Quantity - PRODUCT.[In Stock]
FROM SALESDETAILS
WHERE SALESDETAILS.Product_ID = PRODUCT.Product_ID)
END
Я не думаю, что я имею в виду это через правильно, но я не могу показаться, чтобы выяснить, как получить его, чтобы вычесть количество, которое было только что вставленный от [In Stock]
на столбец в таблице PRODUCT
.
УСТАНОВКА ПРОДУКТА НАСТРОЙКИ [ВХОД] = [ВХОД] - вставлен.Количество, где Product_id = вставлено.product_id не уверен в синтаксисе, но shoudllbe что-то вроде этого – mxix
Вам нужно ** указать ** псевдо-таблицу «Вставлено» в ваш триггер каким-то образом - это «таблица», которая содержит вставленные строки - прямо сейчас, вы обновляете всю таблицу каждый раз, когда вставлена одна строка - не очень эффективно –