1
我創建了這個函數,它檢查飛行的總成本是否已經被正確計算。它應該增加座位的價格,例如400乘以顧客要求的座位數目,例如2.如果客戶正確輸入總數,例如800,則應該成功返回查詢。如果他們沒有正確地輸入總數,例如1000那麼它應該引發異常'價格計算錯誤'。函數錯誤 - postgresql
CREATE FUNCTION check_totalcost() RETURNS trigger AS $check_totalcost$
DECLARE seatprice int;
DECLARE noofseats int;
BEGIN
SELECT priceperseat INTO seatprice
FROM flight
WHERE flightid = flightid;
SELECT numseats INTO noofseats
FROM flightbooking
WHERE flightid = flightid;
IF(seatprice*noofseats != new.totalcost) THEN
RAISE EXCEPTION 'price has been calculated incorrectly';
END IF;
RETURN NEW;
END;
$check_totalcost$ LANGUAGE plpgsql;
/* This is used to run the function above */
CREATE TRIGGER insert_totalcost
BEFORE INSERT OR UPDATE ON flightbooking
FOR EACH ROW EXECUTE PROCEDURE check_totalcost();
當我輸入了不正確的總額,它引發異常這就是我想要的,但是當我輸入了正確的總量,這也引發了時,它應該成功返回查詢的除外。
當我把新的在flightid面前,我的觸發器總體不起作用。當我使用錯誤的總成本插入飛行記錄時,它會插入 –
查看更新後的答案。 – klin
非常感謝,這工作,並非常有幫助。 –