borrame.com - Colección particular de recortes de código y documentación para programación web

Lo más fresco

  1. Cadena aleatoria en PHP (¡ahora también multi-byte!) Modificado
  2. Cookies en JavaScript Modificado
  3. Reiniciar Apache con cuidado (graceful restart) Modificado

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Fecha y hora
  3. Cookies
  4. Rotar logs en Windows
  5. Reiniciar Apache con cuidado (graceful restart)

Fechas automáticas

A veces viene bien tener un par de columnas en una tabla para controlar cuándo se ha creado y modificado cada fila. Con Oracle —¡faltaría más!— se puede automatizar estupendamente.

CREATE TABLE FOO (
    FOO_ID NUMBER(*,0) NOT NULL,
    -- ... y resto de campos

    FECHA_INS DATE DEFAULT SYSDATE,
    FECHA_MOD DATE DEFAULT SYSDATE,

    CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);

COMMENT ON COLUMN FOO.FECHA_INS IS 'Fecha de inserción';
COMMENT ON COLUMN FOO.FECHA_MOD IS 'Fecha de modificación';


/*
 * Mantener actualizada la fecha de modificación
 */

CREATE OR REPLACE TRIGGER FOO_TRG1
    BEFORE UPDATE
    ON FOO
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
BEGIN
    :NEW.FECHA_MOD := SYSDATE;

    EXCEPTION
        WHEN OTHERS THEN RAISE;
END FOO_TRG1;
/
ALTER TRIGGER FOO_TRG1 ENABLE;

El mecanismo es sencillo cual botijo: el DEFAULT SYSDATE rellena los campos con la fecha actual al insertar la fila (INSERT) —siempre que no se asignen valores a mano— y el trigger cambia la fecha de actualización al modificar la fila (UPDATE).

Esta página ha sido impresa el jueves 29 de julio de 2010 (21:27:29 +0200) desde http://borrame.com/recortes/oracle/fechas-automaticas.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2010 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com