SQL можно ли создать оператор if, если подзапрос возвращает более 1 строки? - PullRequest
0 голосов
/ 26 января 2020

Привет, я делаю процедуру "AddToCart". Я хочу проверить, есть ли строка с такими же значениями столбца и есть ли обновление, если нет, вставить новую строку. Я продолжаю получать подзапрос возвращает более 1 строки.

CREATE PROCEDURE AddToCart(thisCustomerID INT, thisOrdersID INT, thisShoeID INT, thisQuantity INT)


BEGIN
    DECLARE any_rows_found int;


    IF (thisOrdersID IS NULL)
    THEN
        INSERT INTO orders (Date, CustomerID)
        VALUES (CURRENT_DATE, thisCustomerID);

        SELECT COUNT(*)
        INTO any_rows_found
        FROM Shoe_Orders
        WHERE OrdersID = thisOrdersID
          AND ShoeID = thisShoeID;

        IF (any_rows_found > 0)
        THEN
            UPDATE shoe_orders
            SET Quantity = Quantity + thisQuantity
            WHERE ShoeID = thisShoeID
              AND OrdersID = thisOrdersID;
        ELSE
            INSERT INTO shoe_orders (ShoeID, OrdersID, Quantity)
            VALUES (thisShoeID, (SELECT ID
                                 FROM orders
                                 WHERE CustomerID = thisCustomerID
                                   AND Date = CURRENT_DATE), thisQuantity);
        END IF;
    END IF;
END //
...