Как реализовать ограничение в postgresql - PullRequest
0 голосов
/ 10 марта 2020

В таблице сведений (идентификатор продукта, идентификатор поступления) можно добавлять только продукты с запасом больше 0. Склад (ID товара, Склад). Как я могу реализовать это ограничение в Postgresql?

1 Ответ

0 голосов
/ 10 марта 2020
-- CREATE THE FUNCTION
CREATE FUNCTION trg_product_stock_check()
  RETURNS trigger AS
$func$
BEGIN
  if exists (select * from warehouse w where w.product_id = new.product_id and stock <= 0) then
    raise NOTICE 'Product must have a stock of greater than 0';
    return null;
  end if;
  return new;
END
$func$  LANGUAGE plpgsql;

-- CREATE THE TRIGGER
CREATE TRIGGER product_stock_check
BEFORE INSERT ON "orders"
FOR EACH ROW EXECUTE PROCEDURE trg_product_stock_check();

Решением является создание функции триггера, которая устанавливается при вставке таблицы заказа. Сначала создайте свою функцию. Вы хотите проверить в таблице склада количество товара в функции. Если количество товара на складе меньше или равно 0, верните ноль с сообщением журнала. В противном случае верните вновь созданную строку (например, ключевое слово new в функции - это вставляемая строка). После создания функции вы можете настроить запуск триггера на таблице заказов перед вставкой.

Подробнее о создании триггера / функции здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...