> create table t1(_id integer primary key, v integer, d integer); > CREATE TRIGGER t1_trig BEFORE UPDATE ON t1 > BEGIN > update t1 SET v=OLD.v+1 WHERE NEW._id=OLD._id AND NEW.d!= OLD.d; > END;
I guess your trigger does something different from what you wanted to do: it changes value of v in the whole table when you change value of d in any row... > in 3.6.20, trigger does the right thing and updates the table. but the data > is not reflected in the table after the update statement is complete. I > didn't look at the vdbe. I wonder how did you see that? If data is not in the table after update statement then how did you see that trigger actually updates the table? Maybe your issue is somehow related to recursive call of the trigger which became possible recently? Anyway I think you better make your trigger AFTER UPDATE, not BEFORE UPDATE. Pavel On Tue, Nov 24, 2009 at 1:15 PM, Vasu Nori <[email protected]> wrote: > wondering if this is a known issue in 3.6.20. > > create table t1(_id integer primary key, v integer, d integer); > CREATE TRIGGER t1_trig BEFORE UPDATE ON t1 > BEGIN > update t1 SET v=OLD.v+1 WHERE NEW._id=OLD._id AND NEW.d!= OLD.d; > END; > > insert into t1 values(1, 1,0); > update t1 set d= 2 where _id = 1; <-- expected "v" = 2 > select * FROM t1; <-- shows "v" = 1 > > this works fine in versions upto 3.6.16.. > > in 3.6.20, trigger does the right thing and updates the table. but the data > is not reflected in the table after the update statement is complete. I > didn't look at the vdbe. > anyone seen this behavior? > > thanks > _______________________________________________ > sqlite-users mailing list > [email protected] > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list [email protected] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

