2009-12-26 4 views
12

J'ai une table qui ressemble à ceciEst-ce que sqlite3 prend en charge un déclencheur pour mettre automatiquement à jour un champ datetime 'updated_on'?

user_id | name | created_on | updated_on 
-------------------------------------------------- 
1   | Peter D | 1/1/2009  | 

Si j'insérer ou mettre à jour un enregistrement, je voudrais un déclencheur pour mettre à jour le champ updated_on avec datetime (« maintenant »). Mais je ne trouve pas le nom de la fonction pour cibler la dernière ligne mise à jour dans sqlite3. Est-ce qu'il y a un?

+0

http://www.sqlite.org/lang_createtrigger.html –

+0

Merci Hassan, le problème est que je ne peux pas trouver un moyen, à partir d'un déclencheur, pour cibler la dernière ligne mis à jour sqlite3. J'utilise 'last_insert_rowid()' dans un autre trigger. Mais je cherche 'last_update_rowid()' et je ne trouve rien de semblable. –

+0

La réponse fournie par @DougCurrie fonctionne vraiment bien! C'est dommage que la documentation de SQLite ne soit pas aussi claire [Créer trigger SQLite] (http://www.sqlite.org/lang_createtrigger.html) – Caumons

Répondre

24
CREATE TRIGGER your_table_trig AFTER UPDATE ON your_table 
BEGIN 
    update your_table SET updated_on = datetime('now') WHERE user_id = NEW.user_id; 
END; 
+0

A travaillé comme un charme! Merci. –

+0

Si cela répond à votre question, il est habituel que SO «Accepte» la réponse en cliquant sur la coche à côté de la réponse. –

Questions connexes