簡體   English   中英

Postgresql 觸發器函數語法錯誤

[英]Postgresql trigger function syntax error

嗨,這是我在 pgAdmin3 postgresql 上的第一個觸發器函數,我嘗試過但已經放棄了,如果商品已售出,我想添加一個觸發器來填充 item_sold 表。 我正在對電子交易網站進行評估。

CREATE TRIGGER trPopulateItemSold()
AFTER UPDATE ON tradebay.item FOR EACH ROW    
RETURN trigger AS $populate$
BEGIN
INSERT INTO item_sold (transaction_id, quantity, buyer_id, item_id) VALUES (transaction_id, NEW.quantity, buyer_id, NEW.item_id);
END;
LANGUAGE plpgsql;

SQL 錯誤:

ERROR:  syntax error at or near "("
LINE 1: CREATE TRIGGER trPopulateItemSold()
                                     ^

您的CREATE TRIGGER語法無效。 你誤解了它的工作原理。

觸發器的創建分兩步完成:

  • 創建實現觸發邏輯的函數; 然后
  • 創建一個觸發器,在發生某些事情時運行該函數

有關詳細信息和示例,請參閱 PostgreSQL 手冊:

你似乎試圖將兩者混為一談。 那不管用。 你需要:

CREATE OR REPLACE FUNCTION .... RETURNS trigger AS $$
$$;

CREATE TRIGGER ...;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM