Un trigger que sella cada cambio en SQL
El clásico: mantener honesta una columna updated_at sin confiar en cada llamador.
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL,
updated_at TEXT
);
CREATE TRIGGER articles_touch
AFTER UPDATE OF title, body ON articles
FOR EACH ROW
WHEN OLD.body <> NEW.body OR OLD.title <> NEW.title
BEGIN
UPDATE articles
SET updated_at = CURRENT_TIMESTAMP
WHERE id = NEW.id;
END;
Cómo funciona
WHENacota el trigger a los updates que de verdad cambiaron algo.OLDyNEWguardan la fila antes y después de la escritura.- La guarda sobre la columna evita que el update dentro del trigger entre en bucle.
Palabras clave y builtins usados aquí
AFTERBEGINCREATECURRENT_TIMESTAMPEACHENDFORINTEGERKEYNEWNOTNULLOFOLDONORPRIMARYROWSETTABLETEXTTRIGGERUPDATEWHENWHERE
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 324
- Tokens
- 71
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 47 segundos.
Paso 2 de 2 en Triggers; paso 9 de 16 en Esquema y restricciones.