簡體   English   中英

SQL觸發器:BEFORE UPDATE OF

[英]SQL trigger: BEFORE UPDATE OF

我的sqlite3數據庫中有以下模式。

它是一個存儲用戶對產品的出價的表格,以及用於從我的應用程序代碼中卸載有效性檢查的觸發器。

這里的目標是檢查新的出價是否大於前一個出價,如果沒有,則向應用程序提出錯誤。 它適用於INSERT ,但即使NEW.amount實際上是給定產品的最大出價, UPDATE也會引發錯誤。

我無法弄清楚為什么會發生這種情況主要是因為觸發器無法調試。 對此的建議也將不勝感激。

CREATE TABLE IF NOT EXISTS bids (
    amount INTEGER NOT NULL,
    product_id INTEGER NOT NULL,
    user_id INTEGER NOT NULL,
    submitted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TRIGGER IF NOT EXISTS trig_beforeinsert BEFORE INSERT ON bids
BEGIN
    SELECT CASE
        WHEN
            ((SELECT MAX(amount) FROM bids WHERE product_id = NEW.product_id) >= NEW.amount)
        THEN
            RAISE (FAIL, "invalid amount")
    END;
END;

CREATE TRIGGER IF NOT EXISTS trig_beforeupdate_amount BEFORE UPDATE OF amount ON bids
BEGIN
    SELECT CASE
        WHEN
            ((SELECT MAX(amount) FROM bids WHERE product_id = OLD.product_id) >= NEW.amount)
        THEN
            RAISE (FAIL, "invalid amount")
    END;
END;

實際上這是一個特定於應用程序的錯誤,我可以在發布之前找到它。

暫無
暫無

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

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