On Saturday 27 March 2004 11:14 pm, Avner Levy wrote: > I have a program (which I can't change) that every time a student fails > in a course inserts a record like (34333, "math", 1). ...
B"H, I have a solution for you. Unfortunately, SQLite doesn't let you modify the new.* or old.* inside a trigger, but you can accomplish what you want like this: -- File: test.sql -- Description: Test file for Avner Levy -- Author: Ron Aaron -- Created: Sun 28 Mar 2004 11:21:21 -- Last updated: Mon 29 Mar 2004 08:46:02 BEGIN TRANSACTION; CREATE TABLE grades ( id, course, failures ); CREATE TABLE helper (id, course, failures); CREATE UNIQUE INDEX g_0 ON grades (id,course) ON CONFLICT REPLACE; CREATE UNIQUE INDEX h_0 ON helper (id,course) ON CONFLICT REPLACE; CREATE TRIGGER g_i BEFORE INSERT on grades BEGIN INSERT INTO helper SELECT * from grades WHERE id=new.id and course=new.course; END; CREATE TRIGGER g_i2 AFTER INSERT on grades BEGIN INSERT INTO grades SELECT id,course,failures+1 from helper WHERE id=new.id and course=new.course; END; COMMIT; BEGIN TRANSACTION; INSERT INTO grades VALUES (34333, "math", 1); INSERT INTO grades VALUES (34333, "history", 1); INSERT INTO grades VALUES (34333, "math", 1); INSERT INTO grades VALUES (34333, "math", 1); INSERT INTO grades VALUES (34333, "history", 1); INSERT INTO grades VALUES (34333, "math", 1); COMMIT; SELECT "grades:", * FROM grades; SELECT "helper:", * FROM helper; Hope this helps, Ron -- My GPG public key is at http://ronware.org/ fingerprint: 4E91 06E9 2020 114C 8BCD 55B2 0816 60AF 2B3D 4C51 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]