1

テーブルAがあり、列名がありますCOL_A

誰かが値を変更した場合、トリガーが値をからに戻すこと1を(コストではなく)からに変更するとします。'X''X'1

4

2 に答える 2

0

newSQLiteは列値の変更をサポートしていません。トリガーの列を変更する唯一の方法は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;
于 2012-10-21T10:24:34.273 に答える
-1

UPDATEトリガーは、ケースに適したソリューションです。古い値を新しい値に設定するだけで、目的の動作につながります。

例えば:

CREATE OR REPLACE TRIGGER orders_before_update
BEFORE UPDATE
  ON orders
  FOR EACH ROW
BEGIN
  :new.CreatedAt:= :old.CreatedAt;
END;
于 2012-10-21T09:21:09.327 に答える