AdventureWorks Inventory Trigger

Мой инвентарь нуждается в ограничениях. Я должен убедиться, что количество моего инвентаря никогда не превышает 1000 для моего основного склада. Все лишние единицы отправляются на внешнее хранилище и отслеживаются отдельно. Мне нужно написать триггер для таблицы "ProductInventory", чтобы убедиться, что инвентарь не может превышать 1000 единиц при обновлении.

СОЗДАТЬ ТРИГГЕР tgrExcessInventory

ПО ПРОИЗВОДСТВУ

ПОСЛЕ ОБНОВЛЕНИЯ

КАК

НАЧАТЬ

(Здесь я теряюсь в выражении sql, которое мне нужно сделать, чтобы убедиться, что мой лимит не превышен.)

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

2 ответа

Возможно, немного поздно, но попробуйте это:

CREATE TRIGGER tgrExcessInventory
on Production.ProductInventory
FOR UPDATE
AS
IF EXISTS
 (SELECT 'True'
 FROM Inserted i
 JOIN Deleted d
  ON i.productID = d.ProductID
  AND i.locationID = d.LocationID
  WHERE (d.quantity + i.quantity) >= 1000 OR 
  i.quantity >=1000
 )
 BEGIN
  RAISERROR('Cannot increase stock where units would be over 1,000 units',16,1)
  ROLLBACK TRAN
 END

Код здесь будет запускать триггер, если есть сценарий, в котором вы видите установленное количество = количество + любое значение, которое доведет его до 1000 или более, а также запускает его, есть прямое установленное количество = 1000+

  • Вы уверены, что должны проверить это на ОБНОВЛЕНИЕ? Что касается моей логики, когда вы обновляете значение, это означает, что значения существуют, следовательно, количество запаса не изменяется. Возможно, вы захотите создать триггер для INSERT
  • Что касается проверки количества инвентаря, вы можете сделать простой подсчет на вашем столе.

    IF (SELECT COUNT(1) FROM production.productinventory) >= 1000
    BEGIN
        //Do your thing
    END
    

Вы должны проверить этот вопрос для получения дополнительных ответов. К сожалению, MSSQL не поддерживает "BEFORE UPDATE", как упомянул Гордон Линофф в комментариях, но вы можете легко работать с таблицами DELETED и INSERTED в триггере.

Я надеюсь, что это помогает! Ура!

Другие вопросы по тегам