我有幾個表。表cexp是具有cid和total屬性的表。 CID是分組和總的數量的總和*價格爲CID(在CID匹配)Postgres - 觸發與匹配鍵
的CEXP表是用下面的代碼的結果填入:
SELECT c.cid, sum(ol.quantity*b.price) as total
FROM customers c join orders o on c.cid=o.cid
join orderlist ol on o.ordernum=ol.ordernum
join books b on b.isbn=ol.isbn
GROUP BY C.CID
我的任務是創建一個觸發在插入訂單和訂單列表的行時,在cexp中找到匹配的名稱,並將新數量(來自訂單清單)和價格(來自書籍)的乘積遞增現有總量。如果不匹配,請在cexp中插入一行。
表如下:
客戶-CID,名PK-CID
書籍 - ISBN,標題,價格PK-ISBN
訂單 - ORDERNUM,CID PK-ORDERNUM
Orderlist - ORDERNUM,ISBN,數量 - PK-(ORDERNUM,ISBN)
CEXP - CID,總 - PK-CID
我收到語法錯誤。任何人都可以更正此代碼?
CREATE OR REPLACE FUNCTION cexpupd()
RETURNS trigger as
$cexpupd$
BEGIN
UPDATE cexp
SET new.total=total+Select (b.price*new.quantity) FROM customers c
join orders o on c.cid=o.cid
join orderlist ol on o.ordernum=ol.ordernum
join books b on b.isbn=ol.isbn
where b.isbn=new.isbn;
--INSERT CODE WHEN ABOVE LINE DOES NOT OCCUR -INSERTS NEW ROW INTO CEXP
END;
$cexpupd$
LANGUAGE plpgsql
錯誤信息的確切含義是什麼? –
錯誤:在「選擇」處或附近的語法錯誤 LINE 7:SET new.total = total + Select(b.price * new.quantity)FROM ^ **********錯誤*** ******* 錯誤:在「選擇」處或附近的語法錯誤 SQL狀態:42601 字符:130 – knight
我有一個想法。你可以發佈你的'CREATE TRIGGER'語句,這樣我就可以確定我正在處理哪些表? –