CREATE TABLE Товары(
id SERIAL PRIMARY KEY,
Название VARCHAR(50) NOT NULL,
Цена INT NOT NULL,
Штук_на_складе INT NOT NULL
);
CREATE TABLE Купленные_товары(
id SERIAL PRIMARY KEY,
check_id INT,
product_id INT,
Количество INT NOT NULL,
Цена_товаров INT DEFAULT 0,
FOREIGN KEY (check_id) REFERENCES Чеки(id),
FOREIGN KEY (product_id) REFERENCES Товары(id)
);
INSERT INTO Кассиры(ФИО_кассира, Возраст, Должность)
VALUES
('Романов', 44, 'Кассир'),
('Любимова', 25, 'Кассир'),
('Грачёв', 19, 'Кассир'),
('Иванов', 53, 'Главный кассир');
INSERT INTO Чеки(kas_id) SELECT id FROM Кассиры ORDER BY RANDOM() LIMIT 1;
INSERT INTO Товары(Название, Цена, Штук_на_складе)
VALUES
('Кефир', 55, 10),
('Колбаса', 235, 6),
('Батон', 30, 14),
('Пачка конфет', 90, 25);
INSERT INTO Купленные_товары(check_id, product_id, Количество)
VALUES
(1, 2, 3),
(1, 3, 5);
UPDATE Купленные_товары
SET Цена_товаров = Количество * (SELECT Цена FROM Товары WHERE id = Купленные_товары.product_id)
CREATE OR REPLACE FUNCTION dob()
RETURNS trigger AS
$$
BEGIN
UPDATE Товары
SET Штук_на_складе = Штук_на_складе - (SELECT NEW.Количество FROM Купленные_товары);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER test_trigger
AFTER INSERT
ON Купленные_товары
FOR EACH ROW
EXECUTE PROCEDURE dob();
drop trigger test_trigger ON Купленные_товары;
drop FUNCTION dob;
INSERT INTO Купленные_товары(check_id, product_id, Количество) Values (1,2,1);
SELECT * FROM Купленные_товары;
SELECT * FROM Товары