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)

Campo autonumérico

En Access se llama Autonumérico. En MySQL se denomina AUTO_INCREMENT. En SQL Server se conoce como IDENTITY. Y en Oracle... En Oracle se lo programa uno mismo con una secuencia, un trigger y un par de huevos. Porque Oracle es cosa de hombres.

/*
 * Tabla con clave primaria autoincremental
 */

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

    CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);

COMMENT ON COLUMN FOO.FOO_ID IS 'Secuencia';


/*
 * Secuencia para la clave primaria
 */

CREATE SEQUENCE FOO_SEQ1
INCREMENT BY 1
START WITH 1
MINVALUE 1
CACHE 20;


/*
 * Generador de IDs para la clave primaria
 */

CREATE OR REPLACE TRIGGER FOO_TRG1
    BEFORE INSERT
    ON FOO
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
BEGIN
    -- Si no se ha indicado un ID generamos uno
    IF :NEW.FOO_ID IS NULL THEN
        SELECT FOO_SEQ1.NEXTVAL INTO :NEW.FOO_ID FROM DUAL;
    END IF;

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

Notas

Esta página ha sido impresa el jueves 29 de julio de 2010 (21:26:06 +0200) desde http://borrame.com/recortes/oracle/campo-autonumerico.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