Процедура базы данных не будет работать - PullRequest
0 голосов
/ 12 апреля 2019

Так что мне нужно сделать процедуру для базы данных, в которой вы передаете параметр этой процедуре.Затем он принимает тот параметр, который вы передали, удаляет счет с тем же кодом или соответствующим кодом.Затем он обновит другую таблицу с балансом клиентов.

CREATE PROCEDURE invoiceDelete(IN temp_code CHAR(4))
    BEGIN
    UPDATE customer
        DELETE FROM invoice WHERE INV_NUMBER = temp_code
        SET customer.CUS_BALANCE = customer.CUS_BALANCE + OLD.INV_TOTAL
        WHERE customer.CUS_CODE = OLD.CUS_CODE;
    END;

1 Ответ

0 голосов
/ 12 апреля 2019

Старые / новые предназначены только для триггеров, их нельзя использовать в сохраненных процессах.Кроме того, вы не можете смешивать обновление и удаление.

Сначала необходимо обновить баланс клиента (если вы не сделаете это в триггере), используя традиционный оператор обновления.Затем вы удаляете счет.

CREATE PROCEDURE invoiceDelete(IN temp_code CHAR(4))
    BEGIN
        UPDATE customer INNER JOIN invoice ON customer.CUS_CODE = invoice.CUS_CODE
        SET customer.CUS_BALANCE = customer.CUS_BALANCE + invoice.INV_TOTAL
        WHERE invoice.INV_NUMBER = temp_code;
        DELETE FROM invoice WHERE INV_NUMBER = temp_code;
    END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...