[...]
> 
> The ROWID is not generated until the INSERT statement actually runs.   
> Hence the BEFORE trigger does not have access to it and the BEFORE  
> trigger sees a NULL.  Change the trigger to an AFTER trigger and it  
> will work.
> 
[...]
> 
> D. Richard Hipp
> d...@hwaci.com

Thanks for the unbelievable fast response but

sorry: my code wasn't completely what I wanted so here again:

        CREATE TRIGGER IF NOT EXISTS test
        BEFORE INSERT ON "a"
                BEGIN
                        INSERT INTO a(code,name,creator) 
VALUES(new."code",new."name",new."identity");
                        SELECT RAISE(IGNORE);
                END;

the difference is that I put new."identity" into the field "creator". This is 
the way I chose to differ between creation and altering/updating of a record 
(In case of an UPDATE I've another trigger that shoots new."identity" into 
another field. The result is a kind of record-logging the "normal" user should 
see.

On the other hand I've a complete logging that writes every 
inserted/updated/deleted record in a special table. If I use a trigger in your 
suggested way

        CREATE TRIGGER IF NOT EXISTS test
        AFTER INSERT ON "a"
                BEGIN
                        INSERT INTO a(code,name,identity) 
VALUES(new."code",new."name",new."identity");
                        UPDATE a SET creator = identity, identity = NULL;
                END;

I'd get 2 entries per record in the log - I'd like to avoid this. Are there 
other possibilities? Maybe I'm only a little balky? ;-)
______________________________________________________
GRATIS für alle WEB.DE-Nutzer: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://movieflat.web.de

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to