sqlite3 でカウンターを作成しようとしています
列 c3 は私のカウンターです
必要なのは、c1 と c2 が update ステートメントと一致しない場合に新しい行を挿入するトリガーです。
セットアップ:
CREATE TABLE t1 (c1,c2,c3);
INSERT INTO t1 VALUES (1,1,1);
私の更新コマンド:
UPDATE t1 SET c3=(SELECT c3 FROM t1 WHERE c1=1 AND c2=1) + 1 WHERE c1=1 AND c2=1;
これがトリガーです。私が得たものですが、機能していません。
CREATE TRIGGER tr1
BEFORE UPDATE ON t1
WHEN (SELECT COUNT(*) FROM t1 WHERE c1=NEW.c1 AND c2=NEW.c2) < 1
BEGIN
INSERT INTO t1 (c1,c2,c3) VALUES (NEW.c1, NEW.c2, 0);
END;
ここに私が試したいくつかの絶望的なことがあります:
CREATE TRIGGER tr1 BEFORE UPDATE ON t1 WHEN (SELECT COUNT(*) FROM t1 WHERE c1=1 AND c2=2) < 1 BEGIN INSERT INTO t1 (c1,c2,c3) VALUES (2, 2, 0); END;
CREATE TRIGGER tr2 BEFORE UPDATE ON t1 WHEN (SELECT COUNT(*) FROM t1 WHERE c1=NEW.c1 AND c2=NEW.c2) = 0 BEGIN INSERT INTO t1 VALUES (2, 2, 0); END;
CREATE TRIGGER tr3 AFTER UPDATE ON t1 WHEN (SELECT COUNT(*) FROM t1 WHERE c1=NEW.c1 AND c2=NEW.c2) = 0 BEGIN INSERT INTO t1 VALUES (2, 2, 0); END;