如果年齡被插入為負數,我試圖設定年齡 = 0。我不知道代碼有什么問題:
CREATE TRIGGER verify_age
BEFORE INSERT ON customers
FOR EACH ROW
WHEN (NEW.age < 0)
BEGIN
UPDATE customers
SET age = 0
END;
uj5u.com熱心網友回復:
您的代碼中的語法錯誤是它缺少;before END,但即使您更正它也無法解決您的問題。
您需要WHERE在陳述句中添加一個子句,UPDATE以便只更新新行而不是整個表。
子句中的條件WHERE將檢查rowid新行的 ,但這rowid僅在插入行后才存在。
因此,您必須將觸發器更改為AFTER INSERT觸發器:
CREATE TRIGGER verify_age AFTER INSERT ON customers
WHEN NEW.age < 0
BEGIN
UPDATE customers
SET age = 0
WHERE rowid = NEW.rowid;
END;
請參閱演示。
uj5u.com熱心網友回復:
嘗試這個:
CREATE OR REPLACE TRIGGER validate_age
BEFORE INSERT
ON customers
FOR EACH ROW
BEGIN
IF :new.age < 0
THEN
:new.age := 0;
END IF;
END;
或者 :
CREATE TRIGGER validate_age
BEFORE INSERT ON customers
BEGIN
SELECT
CASE
WHEN NEW.age < 0 THEN
NEW.age = 0
END;
END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/514004.html
上一篇:將事件表轉換為時間序列
