我有表A
,并且列名为COL_A
。
我希望如果有人更改了该值,请从1
到'X'
(非常数)说明触发器会将其从'X'
更改为1
。
答案 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 :(得分:-1)
UPDATE触发器是一个很好的解决方案。只需将旧值设置为新值,即可获得所需的行为。
例如:
CREATE OR REPLACE TRIGGER orders_before_update
BEFORE UPDATE
ON orders
FOR EACH ROW
BEGIN
:new.CreatedAt:= :old.CreatedAt;
END;