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

Lo más fresco

  1. LPAD en SQL Server Nuevo
  2. Eliminar todos los objetos en SQL Server Modificado
  3. Dominio principal Nuevo
  4. Eliminar formato en Excel Nuevo

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Campo autonumérico
  3. Fecha y hora
  4. Cookies
  5. Convertir IP entre cadena y número

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 11 de marzo de 2010 (20:53:48 +0100) 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