2009/5/9 Sam Carleton <[email protected]>:
> This is my first BEFORE INSERT trigger in SQLite and I am getting an error:
>
> SQL error: near "new": syntax error
>
> My goal is that on an insert only the insertedby value is provide.
> The trigger will set that to the updatedby, insertedon and updatedon
> fields. I searched the web and the only examples I could find was of
> an AFTER INSERT, am I better off with that approach? I would think
> not.
An UPDATE on a record can only work AFTER it has been inserted.
>
> Here is SQL for the table and trigger:
> ---------------------------------------------------------------
> CREATE TABLE Customer (
> CustomerId INTEGER PRIMARY KEY AUTOINCREMENT,
> IsInSlideShow INTEGER NOT NULL,
> Username CHAR(50) NOT NULL,
> Password CHAR(50),
> insertedby CHAR(50) NOT NULL,
> instertedon DATE NOT NULL,
> updatedby CHAR(50) NOT NULL,
> updatedon DATE NOT NULL,
> UNIQUE (username));
>
> CREATE TRIGGER ti_Customer BEFORE INSERT ON Customer
> BEGIN
> new.instertedon = DATETIME('NOW');
> new.updatedon = new.instertedon;
> new.updatedby = new.insertedby;
> END;
The trigger must be a valid sql statement.
As in:
sqlite> create table tst( id integer primary key, data real,
insertDate real, updateDate real );
sqlite> create trigger tstTrig after insert on tst begin update tst
set updateDate=insertDate where id=new.id; end;
sqlite>
sqlite> insert into tst( data, insertDate ) values( 1, julianday( '2009-05-09 12
:00:00' ) );
sqlite> insert into tst( data, insertDate ) values( 2, julianday( '2009-05-09 13
:00:00' ) );
sqlite>
sqlite> select * from tst;
1|1.0|2454961.0|2454961.0
2|2.0|2454961.04166667|2454961.04166667
sqlite>
Rgds,
Simon
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users