我在PostgreSQL中有三個表:customers,services和purchased_services。它與鏈接表是一對多的關係,因此在第二個表中引用主鍵的第三個表中有外鍵。每個表中都有一個主鍵。在客戶表中,我有charge
列,在服務中有tax_percents
列,並且在買到的服務中有列quantity
,without_tax
,tax
和total
。我想寫一個觸發器,在quantity
列更新之後會更新所有的without_tax
等列以及客戶的charge
列。我寫了這個至今:如何找出在postgresql中更新了哪一行
CREATE FUNCTION updateValues() RETURN TRIGGER AS
$BODY$
BEGIN
UPDATE bought_services SET
without_tax = quantity * (SELECT services.net_price FROM bought_services LEFT JOIN
services ON bought_serices.service_id = services.id),
tax = without_tax * (SELECT services.tax_percents FROM bought_services LEFT JOIN
services ON bought_serices.service_id = services.id) * 0.01,
total= without_tax + tax ;
UPDATE customers SET
charge = SELECT SUM(total) FROM bought_services LEFT JOIN customers ON
wykupione_uslugi.customer_id = customers.id WHERE bought_services.customer_id = ?
end;
$BODY$
CREATE TRIGGER UpdateBoughtServicesValues AFTER UPDATE ON bought_services
FOR EACH ROW EXECUTE PROCEDURE updateValues();
我真的不知道應該怎麼類型,而不是?
也就是說,我應該怎麼告訴我要總結總額的所有客戶服務的Postgres對此我更新了其中一個的quantity
字段。
這不是Postgres的有效觸發器代碼。 –
我試圖使用我的MySQL知識,所以你可以提供更多的細節? – Colonder
更正的代碼,現在是否正確? – Colonder