2012-10-21 23 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语法。 –