У меня есть три таблицы с именами "Worker_stock", "Sent_inputs" и "Received_inputs"
CREATE TABLE "Sent_inputs" (
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"Date" TEXT DEFAULT Datetime('now','%d/%m/%Y'),
"Name" TEXT NOT NULL,
"Material" TEXT NOT NULL,
"Amount" INTEGER NOT NULL
);
CREATE TABLE "Received_inputs" (
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"Date" TEXT DEFAULT Datetime('now','%d/%m/%Y'),
"Name" TEXT NOT NULL,
"Material" TEXT NOT NULL,
"Amount" INTEGER NOT NULL,
"Payed" REAL NOT NULL
);
CREATE TABLE "Worker_stock" (
"Name" TEXT NOT NULL,
"Material" TEXT NOT NULL,
"Amount" REAL NOT NULL,
PRIMARY KEY("Name", "Material")
);
Я хочу, чтобы при вставке в Received_inputs или Sent_inputs была вставка ( или обновите существующую запись) в таблице Worker_stock.
Проблема в том, что
Для производства productX мне нужно 1 productY и 2 материалA
Для производства productY мне нужно 1 материалB
Если я отправил 100 materialA и 50 из materialB (на основе вставки в Sent_inputs) триггер должен выполнить:
INSERT INTO Employers_stock (Name, Material, Amount)
VALUES ("Jane Doe", "materialA", "100"),
("Jane Doe", "materialB", "50");
На следующий день Джейн Доу вернет мне 50 productX (основано на вставке в Received_inputs), и триггер должен выполняться так, чтобы в конце SELECT * FROM Worker_stock;
вернул меня:
Name | Material | Amount
-----------------------------
Jane Doe | MaterialA | 50
Jane Doe | MaterialB | 25
Чем я не полностью закончил было:
CREATE TRIGGER deduce_from_stock AFTER INSERT ON Received_inputs
BEGIN
CASE
WHEN NEW.Material = "productY" THEN
INSERT OR REPLACE INTO Worker_stock (Name, Material, Amount)
VALUES (NEW.Name, "materialB", Amount - NEW.Amount);
WHEN NEW.Material = "productX" THEN
INSERT OR REPLACE INTO ESTOQUE (Name, Material, Amount)
VALUES (NEW.Name, "productY", Amount - NEW.Amount);
INSERT OR REPLACE INTO ESTOQUE (Name, Material, Amount)
VALUES (NEW.Name, "materialA", Quantidade - (NEW.Quantidade)*2);
END;
END;
но так как я здесь, это явно не сработало. Что мне здесь не хватает?