2012-10-21 24 views
1

我有表A,並有一列名稱COL_A如何寫取代更新? - 觸發器

我想,如果有人更改值,可以說從1'X'(不costant)觸發器將改回從'X'1

+1

什麼是你想實現什麼呢?觸發器的價格是 – mossplix

+0

要讓一個單元格具有一些我不希望它發生變化的值。但最初它不需要我想要的價值。 –

回答

0

SQLite不支持更改new列值。 更改觸發器中列的唯一方法是運行UPDATE命令, ,但會再次運行觸發器。

你可以做的是防止在首位更改列:

CREATE TRIGGER IF NOT EXISTS prevent_col_a_change 
BEFORE UPDATE OF col_a ON a 
BEGIN 
    SELECT RAISE(ABORT, 'COL_A must not be changed'); 
END; 
-1

UPDATE觸發器是一個很好的解決方案。只需將舊價值設置爲新價值,這將導致您想要的行爲。

例如:

CREATE OR REPLACE TRIGGER orders_before_update 
BEFORE UPDATE 
    ON orders 
    FOR EACH ROW 
BEGIN 
    :new.CreatedAt:= :old.CreatedAt; 
END; 
+0

這是無效的SQLite語法。 –