Вставьте строку в таблицу. У меня есть триггер и функция регистра. Дайте мне ошибку: 1644 - PullRequest
0 голосов
/ 23 апреля 2020

атрибуты 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 ;

...