атрибуты MENU_ITEM См. Здесь
12123 sake 2.99 1 0.15 D
12123 applepie 2.99 2 v F
Я пытаюсь добавить элемент в таблицу MENU_ITEM, оба входа выдает мне ту же ошибку 1664. Не должно выдавать ошибку. Я не знаю, почему это так. что-то делать с типами данных или NULL?
app.post('/add', function(request, response) {
var itemID = request.body.ItemID;
var name = request.body.Name;
var price = request.body.Price;
var quantity = request.body.Quantity;
var alcohol = request.body.Alcohol;
var vegan = request.body.Vegan;
var itemType = request.body.ItemType;
console.log(itemID,name,price,quantity,alcohol,vegan,itemType);
var sql = `INSERT INTO MENU_ITEM (ItemID, Name, Price,Quantity, Alcohol, Vegan, ItemType) VALUES (itemID, name, price, quantity, alcohol, vegan, itemType)`
connection.query(sql, function (err, result) {
if (err){
throw err;
}else{
console.log("1 item added. ");
}
});
});
delimiter //
CREATE FUNCTION check_type (Itemtype CHAR, Alcohol DECIMAL(4,2), Vegan BOOLEAN) RETURNS BOOLEAN
BEGIN
DECLARE isGood BOOLEAN default FALSE;
CASE (Itemtype)
WHEN 'F' THEN SET isGood = (Alcohol IS NULL);
WHEN 'D' THEN SET isGood = (Vegan IS NULL);
ELSE
BEGIN
END;
END CASE;
RETURN isGood;
end //
delimiter ;
delimiter //
CREATE TRIGGER menu_insert_trigger BEFORE INSERT ON gamelounge.MENU_ITEM
for each row
begin
DECLARE isGood BOOLEAN;
-- check participation and disjoint
SET isGood = check_type(new.Itemtype, new.Alcohol, new.Vegan);
IF (!isGood) THEN
signal sqlstate '45000'
SET MESSAGE_TEXT = 'Incorrect attribute values for item type';
end if;
end //
delimiter ;