typestar

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

  1. WHEN acota el trigger a los updates que de verdad cambiaron algo.
  2. OLD y NEW guardan la fila antes y después de la escritura.
  3. La guarda sobre la columna evita que el update dentro del trigger entre en bucle.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 2 en Triggers; paso 9 de 16 en Esquema y restricciones.

← Anterior Siguiente →