#mysql #sql
#mysql #sql
Вопрос:
Поэтому я должен создать процедуру для базы данных, в которой вы передаете параметр этой процедуре. Затем он принимает тот параметр, который вы передали, удаляет счет-фактуру с тем же кодом или соответствующим кодом. Это обновит другую таблицу, в которой есть баланс клиента.
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. Старые / новые предназначены только для триггеров, вы не можете использовать их в сохраненных процедурах.
Ответ №1:
Старые / новые предназначены только для триггеров, вы не можете использовать их в сохраненных процедурах. Кроме того, вы не можете смешивать обновление и удаление.
Сначала вам нужно обновить баланс клиента (если вы не делаете это в триггере), используя традиционную инструкцию update. Затем вы удаляете счет-фактуру.
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
Комментарии:
1. Спасибо, это идеально. И мне придется больше вникать в это, чтобы понять, спасибо.