Triggers

En el ejemplo anterior la clave timeEnter no tiene valores por defecto. Para que se incialice automáticamente es necesario installar un trigger . El ejemplo muestra como escribir un trigger:
lhp@nereida:~/Lperl/src/SQLITE/examples$ cat trigger1
CREATE TRIGGER insert_t1_timeEnter AFTER  INSERT ON t1
BEGIN
UPDATE t1 SET timeEnter = DATETIME('NOW')  WHERE rowid = new.rowid;
END;
La llamada DATETIME('NOW') retorna el tiempo UTC mientras que datetime('now','localtime') devuelve la hora actual:
sqlite> select datetime('now');
2007-08-17 11:27:21
sqlite> select datetime('now','localtime');
2007-08-17 12:27:33
Para ejecutarlo hacemos:
hp@nereida:~/Lperl/src/SQLITE/examples$ sqlite3 test.db < trigger1
Si ahora introducimos un nuevo registro vemos que tiene inicializado su campo timeEnter:
lhp@nereida:~/Lperl/src/SQLITE/examples$ sqlite3 test.db
sqlite> insert into t1 (data,num) values ('First entry with timeEnter',19);
sqlite> select * from t1;
1|This is sample data|3.0|
2|More sample data|6.0|
3|And a little more|9.0|
4|Another item|12.0|
5|First entry with timeEnter|19.0|2007-08-17 10:53:09



Lenguajes y Herramientas de Programacion 2011-02-02
; INSERT INTO "t1" VALUES(1, 'This is sample data', 3.0, NULL); INSERT INTO "t1" VALUES(2, 'More sample data', 6.0, NULL); INSERT INTO "t1" VALUES(3, 'And a little more', 9.0, NULL); INSERT INTO "t1" VALUES(4, 'Another item', 12.0, NULL); COMMIT;

La salida del comando .dump puede ser filtrada:

lhp@nereida:~/Lperl/src/SQLITE/examples$ sqlite3 test.db ".dump" | sed -e 's/\<t1\(key\)\?\>/tabla\1/g'
BEGIN TRANSACTION;
CREATE TABLE tabla (tablakey INTEGER PRIMARY KEY,data TEXT,num double,timeEnter DATE);
INSERT INTO "tabla" VALUES(1, 'This is sample data', 3.0, NULL);
INSERT INTO "tabla" VALUES(2, 'More sample data', 6.0, NULL);
INSERT INTO "tabla" VALUES(3, 'And a little more', 9.0, NULL);
INSERT INTO "tabla" VALUES(4, 'Another item', 12.0, NULL);
COMMIT;

El siguiente comando muestra como usar un filtro para obtener una modificación de la base de datos inicial:

$ sqlite3 test.db ".dump" | sed -e 's/\<t1\(key\)\?\>/tabla\1/g' | sqlite3 test2.db
lhp@nereida:~/Lperl/src/SQLITE/examples$ ls -ltr
total 8
-rw-r--r--  1 lhp lhp 2048 2007-08-17 11:05 test.db
-rw-r--r--  1 lhp lhp 2048 2007-08-17 11:38 test2.db

Lenguajes y Herramientas de Programacion 2011-02-03
HREF="node729.html">Índice de Materias
Lenguajes y Herramientas de Programacion 2011-02-10
" ALT="etsii">ull
Sig: Acceso a las variables Sup: ¿Atados? ó ¿Corbatas? ó Ant: ¿Atados? ó ¿Corbatas? ó
Casiano Rodríguez León
2011-02-17
2-18 295" HREF="node700.html">Acceso a las variables Sup: ¿Atados? ó ¿Corbatas? ó Ant: ¿Atados? ó ¿Corbatas? ó
Casiano Rodríguez León
2011-02-23
Sup: Práctica: Números Fraccionarios Ant: Inline y Otros Lenguajes
Casiano Rodríguez León
2012-03-31