因此,我必须为数据库创建一个过程,在该过程中将参数传递给该过程。然后,它将采用您传入的参数,删除具有相同代码或匹配代码的发票。然后它将更新另一个包含客户余额的表。
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;
答案 0 :(得分:0)
新旧仅用于触发器,您不能在存储的proc中使用它们。另外,您不能混合使用更新和删除。
首先,您需要使用传统的更新语句来更新客户余额(除非您在触发器中执行此操作)。然后,您删除发票。
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