# 2017 January 4 # # The author disclaims copyright to this source code. In place of # a legal notice', here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # set testdir [file dirname $argv0] source $testdir/tester.tcl set testprefix triggerF ifcapable {!trigger} { finish_test return } foreach {tn sql log} { 1 { } { } 2 { CREATE TRIGGER trd AFTER DELETE ON t1 BEGIN INSERT INTO log VALUES(old.a || old.b || (SELECT count(*) FROM t1)); END; } {1one2 2two1 3three1} 3 { CREATE TRIGGER trd BEFORE DELETE ON t1 BEGIN INSERT INTO log VALUES(old.a || old.b || (SELECT count(*) FROM t1)); END; } {1one3 2two2 3three2} 4 { CREATE TRIGGER tr1 AFTER DELETE ON t1 BEGIN INSERT INTO log VALUES(old.a || old.b || (SELECT count(*) FROM t1)); END; CREATE TRIGGER tr2 BEFORE DELETE ON t1 BEGIN INSERT INTO log VALUES(old.a || old.b || (SELECT count(*) FROM t1)); END; } {1one3 1one2 2two2 2two1 3three2 3three1} } { reset_db do_execsql_test 1.$tn.0 { PRAGMA recursive_triggers = on; CREATE TABLE t1(a INT PRIMARY KEY, b) WITHOUT ROWID; CREATE TABLE log(t); } execsql $sql do_execsql_test 1.$tn.1 { INSERT INTO t1 VALUES(1, 'one'); INSERT INTO t1 VALUES(2, 'two'); INSERT INTO t1 VALUES(3, 'three'); DELETE FROM t1 WHERE a=1; INSERT OR REPLACE INTO t1 VALUES(2, 'three'); UPDATE OR REPLACE t1 SET a=3 WHERE a=2; } do_execsql_test 1.$tn.2 { SELECT * FROM log ORDER BY rowid; } $log } finish_test