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

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19