MySQL: пользовательские функции для триггеров - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно написать сложный триггер, чтобы применить странный шаблон в моем наборе данных, поэтому я решил разделить работу на несколько функций. Однако я получаю несколько ошибок, которые я не понимаю:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`Product Name`;
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STRING     BEGIN   SET @temp_query = (SELECT s1.`Product Name` FROM Sells s1 WHE' 

Мой код:

/* DEFINE VARIABLES */
SET @above_beer_name = null;
SET @below_beer_name = null;
SET @below_beer_average = null;
SET @above_beer_average = null;
SET @average_below_above = null;
SET @temp_query = null;

/* Function gets one beer higher than the input Sells entry in price*/
DELIMITER $$
CREATE FUNCTION getAboveBeer() RETURNS STRING
    BEGIN
        SET @temp_query = (SELECT s1.`Product Name`
             FROM Sells s1
             WHERE s1.`Bar Name` = NEW.`Bar Name`
               AND NEW.`Price` <= s1.`Price`
             ORDER BY `Price` ASC LIMIT 1);
        SET @above_beer_name = @temp_query.`Product Name`;
        RETURN @above_beer_name;
    END$$



/* Function gets one beer lower than the input Sells entry in price*/
DELIMITER $$    
CREATE FUNCTION getBelowBeer() RETURNS STRING
BEGIN
    SET @temp_query = (SELECT Sells.`Product Name` FROM Sells
           WHERE Sells.`Bar Name` = NEW.`Bar Name`
             AND NEW.`Price` >= s1.`Price`
           ORDER BY ASC LIMIT 1);
    SET @below_beer_name = @temp_query.`Product Name`;
    RETURN @below_beer_name;
END $$;
...