[英]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.